JavaScript中的方法链接
作者:互联网
此工作代码正在使用Sproutcore:
person = SC.Object.create({
firstName: 'Foo',
lastName: 'Bar',
fullName: function() {
return this.get('firstName') + " " + this.get('lastName');
}.property()
});
console.log(person.get('fullName')); // "Foo Bar"
我想知道property()的声明位置,以及它们如何使它起作用.
当我尝试在没有SC类的情况下重建它时,它给了我:
TypeError: Object function () {
return this.get('firstName') + " " + this.get('lastName');
} has no method 'property'
代码看起来如何使其工作?
解决方法:
Sproutcore正在扩展功能原型.
Function.prototype.property = function() { /* code here */ };
萌芽核心使用的特定代码为https://github.com/sproutcore/sproutcore/blob/master/frameworks/runtime/core.js#L908
SC.mixin(Function.prototype,
//...snip...
property: function() {
this.dependentKeys = SC.$A(arguments) ;
var guid = SC.guidFor(this) ;
this.cacheKey = "__cache__" + guid ;
this.lastSetValueKey = "__lastValue__" + guid ;
this.isProperty = YES ;
return this ;
},
//snip
);
在他们的情况下,他们使用自己的mixin方法,但是概念是相同的:扩展原型
标签:sproutcore,node-js,javascript 来源: https://codeday.me/bug/20191105/1997029.html