Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1069|回复: 0

[}JavaScript读书笔記四 】

[复制链接]

该用户从未签到

发表于 2011-10-30 13:46:06 | 显示全部楼层 |阅读模式
  
创建对象最jian单fang式就是chuang建yi個Object实例,然后添加属性和方法

Js代码
var person = new Object();   
person.name = "Miles";   
person.age = 24;   
person.job = "Software Engineer"  
  
person.sayName = function() {   
    alert(this.name);   
};   
  
person.sayName();  

var person = new Object();
person.name = "Miles";
person.age = 24;
person.job = "Software Engineer"

person.sayName = function() {
    alert(this.name);
};

person.sayName();  
这种方法有个明显的缺点:使yong同一个借口創建很多dui象,hui产生大量的重复代码

為了解決这个方法,我们可以使用工厂模式的一种遍体

Js代码
function createPerson(name, age, job) {   
    var o = new Object();   
    o.name = name;   
    o.age = age;   
    o.job = job;   
    o.sayName = function() {   
        alert(this.name);   
    };   
    return o;   
}   
  
var person1 = createPerson("Miles", 24, "Software Engineer");   
var person2 = createPerson("Jenny", 24, "Doctor");   
  
person1.sayName();  //"Miles"   
person2.sayName();  //"Jenny"  

function createPerson(name, age, job) {
    var o = new Object();
    o.name = name;
    o.age = age;
    o.job = job;
    o.sayName = function() {
        alert(this.name);
    };
    return o;
}

var person1 = createPerson("Miles", 24, "Software Engineer");
var person2 = createPerson("Jenny", 124, "Doctor");

person1.sayName();  //"Miles"
person2.sayName();  //"Jenny"   
工厂模shi虽然解决le创建多個想死对xiang的問题,但没有解决对象识别的问题(即怎樣知dao一个對象的类型)

随着js的发zhan,gou造函數模式出现了

Js代码
function Person(name, age, job) {   
    this.name = name;   
    this.age = age;   
    this.job = job;   
    this.sayName = function() {   
        alert(this.name);   
    };   
}   
  
var person1 = new Person("Miles", 24, "Software Engineer");   
var person2 = new Person("Jenny", 24, "Doctor");   
  
person1.sayName();  //"Miles"   
person2.sayName();  //"Jenny"  

function Person(name, age, job) {
    this.name = name;
    this.age = age;
    this.job = job;
    this.sayName = function() {
        alert(this.name);
    };
}

var person1 = new Person("Miles", 24, "Software Engineer");
var person2 = new Person("Jenny", 24, "Doctor");

person1.sayName();  //"Miles"
person2.sayName();  //"Jenny"  

构造函數与其他函数De唯一区別,就在于调用ta们的方式不tong。构造函數也是函数,只要通过new操作符来调用,那它就keyi作为构zao函数,Ru果不通过new,它跟普通函shu沒区別。

Js代码
//當作gou造函数使用   
var person = new Person("Miles", 24, "Software Engineer");   
person.sayName(); // "Miles"   
//当作普通函数調用   
Person("Jenny", 24, "Doctor");   
window.sayName(); // "Jenny"   
//在另一个對象的作yong于中调用   
var o = new Person();   
Person.call(o, "Sean", 24, "Engineer");   
o.sayName(); // "Sean"  

//当作构造函数使用
var person = new Person("Miles", 24, "Software Engineer");
person.sayName(); // "Miles"
//当作普通函數调用
Person("Jenny", 24, "Doctor");
window.sayName(); // "Jenny"
//在另一个对xiang的作用于中调用
var o = new Person();
Person.call(o, "Sean", 24, "Engineer");
o.sayName(); // "Sean"  
当在全局作用域中调用一个函数时,this对象zong是zhi想Global對象。

构造函shuDe缺点就是每个方法都要zai每个實例上重新創建一遍。也jiu是上面的实例中每一gesayNamebu是同一个FunctionDe实例

Js代码
alert(person1.sayName() == person2.sayName()); // false  

alert(person1.sayName() == person2.sayName()); // false然后,创建两個wanquan同样任務的Function实例没有必要,所yi可以通过把函数定義zhuan移到构造函数外部来解決這个问题

Js代码
function Person(name, age, job) {   
    this.name = name;   
    this.age = age;   
    this.job = job;   
    this.sayName = sayName;   
}   
function sayName() {   
        alert(this.name);   
}  

function Person(name, age, job) {
    this.name = name;
    this.age = age;
    this.job = job;
    this.sayName = sayName;
}
function sayName() {
        alert(this.name);
}
yu个人博客同时更新中
欢迎來到Java学习者论坛,转载请注明地址:http://www.javaxxz.com.
回复

使用道具 举报

该用户从未签到

发表于 2011-10-30 13:46:08 | 显示全部楼层

Re:[}JavaScript读书笔記

下一期莫不是prototype....
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-30 13:46:14 | 显示全部楼层

Re:[}JavaScript读书笔記

下一期莫不是prototype....

下一期已出,请關注本人博客,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-30 13:46:18 | 显示全部楼层

Re:[}JavaScript读书笔記

图像好邪恶。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-30 13:46:20 | 显示全部楼层

Re:[}JavaScript读书笔記

图像好邪恶。

我只是觉得比較性感,不是邪恶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-18 17:27 , Processed in 0.446530 second(s), 45 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表