javascript - Function.prototype.method 什么是原型(prototype)[名称]

标签 javascript oop prototype

我尽量不重复问题,因为我已经看到一些关于 Douglas Crockford 的 Javascript the Good parts 书的问题/答案

我理解这段代码的大部分内容

Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};

Function.method('inherits', function (Parent) {
this.prototype = new Parent( );
return this;
});

var Mammal = function (name) {
this.name = name;
}.method('get_name', function () {
return this.name;
}).method('says', function() {
return this.saying || '';
});

var Cat = function (name) {
this.name = name;
this.saying = 'meow';
}.inherits(Mammal)

var myCat = new Cat('bagsley');
myCat.get_name();

我遇到的问题是 this.prototype[name] 为什么不写成 this.prototype.name;我知道返回这个允许链接,这里的语法看起来与 jQuery 非常相似,但我仍然没有得到原型(prototype) [name] 部分

感谢任何帮助 谢谢

最佳答案

obj.nameobj[name] 是有区别的。

这...

obj.name = 123;

...将值 123 分配给(对象的)“name” 属性。

另一方面,这...

obj[ name ] = 123;

...会将值 123 分配给那些名称等于 name 变量/参数值的属性。

所以:

var name = 'foo';

obj.name = 123;
obj[ name ] = 456;

// And now:
obj.name; // 123
obj.foo; // 456

关于javascript - Function.prototype.method 什么是原型(prototype)[名称],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10567655/

相关文章:

javascript - 如何包装所有下一个元素直到?

javascript - NodeJS 多线程 : configuration not applied

c++ - 具有基类属性是否有效,即使它在向下转型时是虚拟的

javascript - 在构造函数变量上定义对象时 JavaScript 中会发生什么

javascript - inherit.js 中的奇怪正则表达式(John Resig 着)——为什么、什么以及如何?

javascript - objective-c 对象可以用作 Javascript 对象的原型(prototype)吗?

javascript - JQuery 数组项目不是最后一个

javascript - 如何切换选择中所有元素的类别?

javascript - 在 JavaScript 中,为什么 (-1).toString 和 (-1 >>> 0).toString 相同,但它们给出不同的结果?

python - 战舰: How to automate instances creation?