var App = function(){
this.data = [1,2,3]
}
App.prototype._method = (function(){
return {
getData: function(){
return this.data;
},
setData: function(val){
this.data.push(val)
}
}
})();
我想问一下,对于_method属性下的方法如何指定this为App的实例对象?
var app = new App();
app._method.getData.call(app);
以上是一种方法。
我想问的是:如何实现
app._method.getData(); // 直接调用,不需要写call。最好在定义这些方法时实现,不要在定义完后,再通过bind()方法实现。(当然,也不要将_method内的各个方法直接挂载在prototype)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
this是一个叫做"上下文"的概念,函数调用时确定,想在定义的时候隔了一个"上下文"传貌似有点屌。
感觉无解兄弟,而且不能用bind(),你一个prototype上的函数bind一个实例算是几个意思。考虑其他实例的感受吗。
可以实现畸形的app._method().getData()
但是这样有什么用。。浪费空间,不符合prototype的用意。
还是按基本法来吧,JS内置"构造函数"的prototype上的方法不都一个个来的嘛,Array上那么多方法也不需要分类呀
不明白这样做的意图,试试这样:
调用时
app._method().getData()好奇特的要求,不过看你的
_method命名,我猜你并不想把_method暴露在外。所以可以考虑在调用时做文章而不是在定义的时候。如果我不幸猜错了,那楼上已经有不少解决办法了