什么是原型?构造函数或其他对象
What is prototype? Constructor function or a different object?
根据W3学校的这个页面,对象原型是创建对象的构造函数(如果我错误地解释了这一点,请注明)。而且,根据我的一本Javascript书,原型本身就是一个对象。但是,当我这样做时:
.JS:
function helloObject(name , id , age){
this.name = name;
this.id = id;
this.age = age;
}
document.getElementById("testElement").textContent = typeof helloObject;//returns function
我知道原型只不过是构造函数。那么,这两个论点中哪一个是正确的呢?
构造
函数是一个函数。这就是为什么typeof helloObject
返回function
.每个函数都有一个称为"原型"的属性。此prototype
属性是一个对象。你可以写helloObject.prototype来检查它。但是,仅当您使用函数(在您的例子中为 helloObject)作为构造函数(即使用关键字 new
时,才使用原型对象。因此,当您运行 var obj = new helloObject()
时,obj
变量中有一个新对象,并且该对象具有您的name, id, age
属性。但隐含地,javascript 将__proto__
属性写入新对象prototype
并将构造函数的属性分配给__proto__
。在控制台中查看以下内容:
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
JavaScript 中通常用于继承的函数的属性。这里有几篇文章可以帮助更好地理解prototype
:
http://code.tutsplus.com/tutorials/prototypes-in-javascript--net-24949
https://javascriptweblog.wordpress.com/2010/06/07/understanding-javascript-prototypes/
相关文章:
- 如何使用object.assign()从其他对象引用基本对象属性
- PJAX:记住其他对象状态
- 以编程方式将fabric-js-canvas的图像替换为hq图像,并重新计算其他对象的坐标和大小
- AngularJS:根据其他对象预先选择ng repeat中的select元素
- 如何在 Javascript 中向数组添加其他对象
- 追加子数据 URI,替换 IE 中的其他对象
- 挖空、视图模型位于其他对象和数据绑定中
- 函数中的If语句会创建其他对象
- 对象属性引用JavaScript中的其他对象属性
- 使用map方法将javascript对象数组转换为其他对象数组
- 如何在其他对象中动态生成javascript对象.你能在对象内部使用for循环吗
- 画布对象总是在其他对象后面绘制
- JSON tv4 对象在 true 且存在其他对象时有效
- 视频 src 不会在单击其他对象时重新加载
- Javascript 调用其他对象方法
- JS - 将 和其他对象解析为相关的 HTML
- D3 - 在两个不与其他对象相交的对象之间绘制一条线
- 如何查找触摸移动到其他对象
- 反转对象与其他对象的事件耦合方式
- 将对象的属性与其他对象的属性中的值绑定