Javascript此更改值

时间:2011-07-07 19:38:46

标签: javascript

我如何更正此行为,以便this is.green内的new book()引用function book(){} book.prototype.is = function(){}; book.prototype.is.green = function(){ alert(this); // this should refer to 'new book' not `is` function return this; }; var Book = new book(); Book.is.green(); 。因为我确信没有办法。

new book

TLDR

有没有办法为每个{{1}}构建一个可以保存正确引用的新原型对象?还有其他潜在的技术吗?

没有包装函数/改变书本功能

2 个答案:

答案 0 :(得分:3)

book.prototype.is = function(){ return this; }
Book.is().green();

或(我知道你说你不想改变构造函数,但是):

function book(){ this.is = this; }
Book.is.green();

或(非跨浏览器):

book.prototype = {
    get is(){ return this; }
};
Book.is.green();

这有什么意义?只是将“是”这个词不必要地放在某个地方? Book.isGreen()出了什么问题?

答案 1 :(得分:0)

我认为如果您的对象上的每个方法都返回基础对象,那么this将是您想要的。

有点像jQuery方法总是返回对jQuery对象的引用。