您的位置:首页 > Web前端 > JavaScript

《JavaScript设计模式与开发实践》——JavaScript中使用new关键字创建对象实例

2018-03-14 10:40 796 查看
举个例子:

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;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript
相关文章推荐