首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Function.prototype.method什么是prototype[name]

Function.prototype.method什么是prototype[name]
EN

Stack Overflow用户
提问于 2012-05-13 05:50:35
回答 2查看 1.7K关注 0票数 4

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

我能理解这些代码的大部分

代码语言: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.prototypename为什么不写成this.prototype.name;我知道返回它允许链接,这里的语法看起来非常类似于jQuery,但我仍然不能得到原型名称部分

如有任何帮助,将不胜感激

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-13 06:02:14

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

这..。

代码语言:javascript
复制
obj.name = 123;

...will将值123赋给(对象的) "name"属性。

另一方面,这..。

代码语言:javascript
复制
obj[ name ] = 123;

...will将值123赋值给其名称等于name变量/参数的值的属性。

所以:

代码语言:javascript
复制
var name = 'foo';

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

// And now:
obj.name; // 123
obj.foo; // 456
票数 3
EN

Stack Overflow用户

发布于 2012-05-13 06:01:39

prototype[name]允许name是一个包含任何字符串的变量,并且它将访问由该字符串命名的prototype的属性。prototype.name会查找字面上称为"name“的属性。

[]语法允许您执行以下操作:

  1. 具有可变的属性名称-当在属性名称中使用for..in
  2. Use符号循环遍历属性时,这一点尤其有用。arr[123])
  3. Have与其他语言的关联数组更相似。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10567655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档