2016-02-21 102 views
0

根据W3 Schools的这个页面,对象原型是创建对象的构造函数(请注意,如果我错误地解释了这个)。而且,根据我的一本Javascript书籍,原型本身就是一个对象。但是,当我这样做:什么是原型?构造函数或不同的对象?

JS:

function helloObject(name , id , age){ 
    this.name = name; 
    this.id = id; 
    this.age = age; 
} 

document.getElementById("testElement").textContent = typeof helloObject;//returns function 

我得到的原型是什么,但构造函数。那么,两个论点中的哪一个是正确的?

+1

W3Schools的是完全错误的疙瘩原型和构造在一起。 ** W3S常常是错误的,**你不应该太依赖它们。 – deceze

回答

3

构造函数是一个函数。这就是为什么typeof helloObject返回function。每个函数都有一个名为“prototype”的属性。这prototype属性是一个对象。你可以把它写出来写helloObject.prototype。 但是,原型对象仅在您使用函数(在您的情况下为helloObject)作为构造函数(即关键字为new)时使用。因此,当您运行var obj = new helloObject()时,在obj变量中有一个新对象,此对象具有您的name, id, age属性。但隐含地说,JavaScript在您新的对象中写入__proto__属性,并将构造函数的prototype属性指定为__proto__。在控制台检查了这一点:通常用于在JavaScript的继承功能的

function helloObject(name) { 
    this.name = name; 
} 
var obj = new helloObject('Your name'); 

console.log(helloObject.prototype) 
console.log(obj.__proto__) 
console.log(helloObject.prototype === obj.__proto__) // = true 

Prototype财产。下面是几个职位,可以帮助理解prototype更好:

http://code.tutsplus.com/tutorials/prototypes-in-javascript--net-24949

https://javascriptweblog.wordpress.com/2010/06/07/understanding-javascript-prototypes/

相关问题