我试图不重复问题,因为我已经看到有关道格拉斯克罗克福德的Javascript好书的一些问题/答案
我理解这段代码的大部分内容
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但我仍然没有得到原型[name] part
任何帮助都是适用的 感谢
答案 0 :(得分:3)
obj.name
和obj[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
答案 1 :(得分:2)
prototype[name]
允许name
成为包含任何字符串的变量,它将访问字符串命名的prototype
属性。 prototype.name
会查找名为“name”的属性。
[]
语法允许您:
for..in
obj['foo-bar']
,arr[123]
)