原型和用法 Javascript
Prototypes and usage Javascript
我在下面有一大段代码:
function Foo(name){
this.name = name;
}
Foo.prototype.myName = function() {
return this.name;
}
function Bar(name, label){
Foo.call(this, name);
this.label = label;
}
Bar.prototype = Object.create(Foo.prototype);
Bar.prototype.myLabel = function(){
return this.label;
}
var a = new Bar("a" , "obj a");
a.myName();
a.myLabel();
好的,现在根据我的理解
- 它创建一个函数
Foo
来设置名称 - 它在链接的原型 Foo 对象上创建一个函数
myName
。 - 它创建一个函数
Bar
,该函数仅设置标签并使用函数 Foo 的功能来设置名称,而不是自己动手。 - 然后在Foo和Bar之间建立原型链接。因此,我假设有两个单独的原型对象分别链接在一起,用于Foo和Bar。
- 现在,Bar 的原型对象内部
myLabel
了一个函数。 - 对新 Bar 的调用会创建一个新对象
a
并将其原型对象链接到 Bar 的原型。
所以外卖是:
Foo的原型包含一个get函数 -
myName
Foo本身只是设置一个属性名称
Bar 的原型有一个 get 函数 -
myLabel
酒吧本身只是设置一个属性 - mylabel
原型
a's
对象链接到Bar's prototype
而而Foo's prototype
.所以总共有三个原型对象。
这种思维方式是否正确? 请纠正或添加一些内容以启发讨论。我对这门语言相当陌生,它的细微差别,几乎没有原型的用例/实际示例。
首先列举Foo.prototype
:
Foo.prototype = { constructor: Foo, myName: function() { return this.name}};
然后Bar
调用 Foo
将"name"应用于正在构造的 Bar 实例,而不是自己执行,然后将其第二个参数设置为新的 Bar
对象属性。
但是Bar.prototype
设置为{}
从Foo.prototype
继承的原型。例如,Bar.prototype.constructor == Foo; // true
Bar.prototype
被分配了一个本地自己的属性方法myLabel
,可由Bar
对象继承,但不能由Foo
对象继承。
所以第 1,2,3 点是正确的。
第 4 点不正确。建立了原型继承,使得Bar.prototype
继承自Foo.prototype
。它不是相互的,是单向继承:JavaScript不支持任何类型的双向原型继承。
第 5 点和第 6 点是正确的。
相关文章:
- 原型和用法 Javascript
- 用于添加两个数字的javascript闭包的用法
- javascript中不带转义字符串的${variable}用法
- YUI Compressor Maven Mojo缩小javascript的用法
- 包括外部javascript;不遵守闭包用法
- Javascript模块用法
- Javascript window.postmessage()帮助-don'我不了解用法
- javascript中for循环的用法
- 为Google Matrix指定API密钥API Javascript检索用法
- Javascript .call() 用法.一个工作案例,一个不是.有什么区别
- javascript中||的正确用法是什么
- Javascript函数的多种用法
- 如何通过函数调用查找 JavaScript 变量的传递用法
- 了解 JavaScript 函数的用法
- Javascript的getElementById的用法
- apply() 的这种用法在 Javascript 中是什么意思
- JavaScript 和 AngularJs 模块的区别和用法
- HTML 标记中的 JavaScript 用法
- 大括号的Javascript用法
- 这两种javascript用法的区别是什么?