JavaScript:获取对象实例以包含扩展变量

时间:2010-09-03 23:13:47

标签: javascript object instances extending

所以,说我有以下脚本:

var hey = {
    foo: 1,
    bar: 2,
    baz: 3,
    init: function(newFoo){
        this.foo = newFoo;
        return this;
    }
}
hey.check = function(){
    alert('yeah, new function');
}

基本上,我可以致电new hey.init(999)并获取一个新的hey变量,hey.foo设置为999.但是当我这样做时,hey.init(999).check()不再定义。有没有办法模仿脚本,但允许新的hey有扩展变量/函数?

编辑:将hey.check()更改为hey.init(999).check() 抱歉...

2 个答案:

答案 0 :(得分:2)

您正在做的事情实际上并不是获取新的hey实例,而是获得仅包含hey.init属性的foo实例。

我认为这就是你想要做的事情:

var hey =function() {
    this.foo = 1;
    this.bar = 2;
    this.baz = 3;
    this.init = function(newFoo){
        this.foo = newFoo;
    }
}
hey.check = function(){
    alert('yeah, new function');
}


//now instantiating our class, and creating an object:
var heyInstance=new hey();
heyInstance.init(999);
alert(heyInstance.foo);

答案 1 :(得分:0)

对我有用......

粘贴时

var hey = {
    foo: 1,
    bar: 2,
    baz: 3,
    init: function(newFoo){
        this.foo = newFoo;
        return this;
    }
}
hey.check = function(){
    alert('yeah, new function');
}
console.log(hey);
hey.init(22);
console.log(hey);
hey.check();

进入Firebug的控制台,我最终得到hey.check();的警报,第二个日志显示foo == 22的对象。

你的目的是什么?