码迷,mamicode.com
首页 > Web开发 > 详细

js 创建对象

时间:2017-11-05 00:26:26      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:zha   技术   原型模式   一个   lis   tor   span   构造   new   

前三种方式其实本质上都一样,内存示意图如下:

技术分享

js 创建对象的第一种方式(创建一个Object的新实例):
var person = new Object();
person.name = zhangsan;
person.age = 18;
person.sayName = function() {
    alert(this.name);
};
js 创建对象的第二种方式(字面量形式创建一个Object的新实例):

// 注意,属性和值之间要写成冒号,多个属性之间用逗号分隔。
var person = {
    name : ‘zhangsan‘,
    age : 18,
    sayName : function() {
        alert(this.name);
    }
};
js 创建对象的第三种方式(工厂方法创建一个Object的新实例):
function createPerson(name, age) {
    var o = new Object();
    o.name = name;
    o.age = age;
    o.sayName = function() {
        alert(this.name);
    }
    return o;
}
var person1 = createPerson(‘zhangsan‘, 19);
var person2 = createPerson(‘lisi‘, 20);
js 创建对象的第四种方式(构造函数模式):

这种方式的内存示意图如下:

技术分享
function Person(name, age) {
    this.name = name;
    this.age = age;
    this.sayName = function() {
        alert(this.name);
    }
}
var person1 = new Person(‘zhangsan‘, 19);
var person2 = new Person(‘lisi‘, 20);
js 创建对象的第五种方式(原型模式):

这种方式的内存示意图如下:

技术分享
function Person(){}
Person.prototype.name = ‘zhangsan‘;
Person.prototype.age = 18;
Person.prototype.sayName = function() {
    alert(this.name);
}
var person1 = new Person();
var person2 = new Person();
js 创建对象的第六种方式(通过字面量的形式给原型赋值)
// 这种方式创建的对象的原型的构造方法已经不再指向Person了,指向的是Object。

技术分享
function Person() {}
Person.prototype = {
    this.name : ‘zhangsan‘;
    this.age : 18;
    this.sayName : function {
        alert(this.name);
    }
};
var person = new Person();

alert(Person.prototype.constructor == Person);  //false
alert(Object.prototype.constructor == Object);    //true
alert(Person.prototype.isPrototypeOf(person));  //true
alert(Object.prototype.isPrototypeOf(person));   //true

js 创建对象

标签:zha   技术   原型模式   一个   lis   tor   span   构造   new   

原文地址:http://www.cnblogs.com/BaiLaowu/p/7785088.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!