《JavaScript设计模式与开发实践》——JavaScript中使用new关键字创建对象实例
2018-03-14 10:40
796 查看
举个例子:
JS中的对象都具有_proto_属性
Function是特殊的对象,除了拥有_proto_属性,还有特有的属性——原型属性(prototype),这个属性是一个指针,指向一个对象,而这个对象的用途包含可以由特定类型的所有实力共享的属性和方法
下图为对象之间的关系:
模拟new关键字创建对象(这段代码来自《JavaScript设计模式与开发实践》):
function Person( name ){ this.name = name; }; Person.prototype.getName = function(){ return this.name; }; var p1 = new Person(); console.log( Object.getPrototypeOf( a ) === Person.prototype ); // 输出: true
JS中的对象都具有_proto_属性
Function是特殊的对象,除了拥有_proto_属性,还有特有的属性——原型属性(prototype),这个属性是一个指针,指向一个对象,而这个对象的用途包含可以由特定类型的所有实力共享的属性和方法
下图为对象之间的关系:
模拟new关键字创建对象(这段代码来自《JavaScript设计模式与开发实践》):
var objectFactory = function() { /** 从 Object.prototype 上克隆一个空的对象 **/ var obj = new Object(); /** 取得外部传入的构造器,本例中为 Person **/ var Constructor = [].shift.call(arguments); /** 让 obj.__proto__ 指向 Person.prototype,取代原来的 Object.prototype **/ obj.__proto__ = Constructor.prototype; /** 借用外部传入的构造器给 obj 设置属性 **/ var ret = Constructor.apply(obj, arguments); /** 确保构造器总是会返回一个对象 **/ return typeof ret === 'object' ? ret : obj; };
相关文章推荐
- scala不使用new关键字创建对象实例
- scala不使用new关键字创建对象实例
- JavaScript基础 使用new Date() 创建当前日期时间对象
- 使用new关键字创建对象的三个作用
- JavaScript基础 使用new关键字和Array()来创建空数组 并 不按顺序来添加元素
- javascript不用new关键字创建对象示例
- JavaScript中使用构造器创建对象无需new的情况说明
- JavaScript基础 使用new Date() 创建当前日期时间对象
- JavaScript中使用构造器创建对象无需new的情况
- JavaScript中使用构造器创建对象无需new的情况
- JavaScript中使用构造器创建对象无需new的情况说明
- JavaScript基础 使用new关键字和Array()来创建空数组 并 不按顺序来添加元素
- Effective C++第17条:要在单独的语句中使用智能指针来存储由new创建的对象
- 当使用new B()创建B的实例时,产生什么输出
- 创建String对象时, 使用String s=new String ("abc")和String s="abc"语句有什么区别?
- javascript创建对象——组合使用构造函数和原型模式
- javascript的对象创建和使用
- 使用隐藏的new来创建对象
- javascript 中的 prototype和constructor属性的使用(constructor属性始终指向创建当前对象的构造函数,每个函数都有一个默认的属性prototype,而这个prototype的constructor默认指向这个函数)
- 第2章 Java编程基础——FAQ2.22 创建String对象时, 使用String s=new String (“abc”)和String s=“abc”语句有什么区别?