使用javascript调用函数访问构造函数属性

时间:2014-05-01 16:29:33

标签: javascript prototype

我尝试使用javascript调用函数访问构造函数的属性。 编辑:澄清我的想法的新例子:

Multiply = (function() {
    function Multiply() {
        this.multiplier = 10;
    }

    Multiply.prototype.multiply = function(number) {
        return number * this.multiplier;
    }

    return Multiply;

})();

Price = (function() {
    Price () {}

    Price.prototype.tenTimes = function(price) {
        console.log(Multiply.prototype.multiply.call(this, price);
    }

    return Price;
})()

var price = new Price();

price.tenTimes(10);

因此,在运行此代码时,由于'这个'我将会得到未定义的内容。它不再引用同一个物体了。
那么,甚至可以做那样的事情。新关键字是实现此目标的唯一解决方案吗?

编辑:我只是想知道当我只想使用该构造函数的单个函数时是否可以避免继承。你可以想象this.multiplier是我想在任何地方使用的某种配置。

1 个答案:

答案 0 :(得分:0)

你还没有在那里建立任何继承。

您需要的是:

Person = (function() {
    function Person() {
        this.name = 'myname';
    }

    Person.prototype.say = function() {
        console.log(this.name);
    }

    return Person;

})();

Person2 = (function() {
    function Person2() {}
    Person2.prototype = new Person(); // This is new

    Person2.prototype.hello = function() {
        this.say(); // This is new
    }


    return Person2;
})()


var person2 = new Person2();

person2.hello();

如果您坚持使用call,则可以执行以下操作:

    Person2.prototype.hello = function() {
        Person2.prototype.say.call(this); // or Person....
    }

但这似乎有点不必要的错综复杂。