如果我需要一个对象用于另一个用于函数,这是最好的吗?
function A() {
this.alert = function () {
console.log(b.value);
}
this.alert2 = function () {
console.log(this.value);
}
}
function B() {
this.value = 'test';
}
var a = new A();
var b = new B();
A.prototype.b = b;
// Option 1
`a.alert();`
// Option 2
`a.alert2.apply(b);`
我认为选项2更好,因为只在一个函数中使用对象(b)。
答案 0 :(得分:4)
原型更容易,但我会反过来使用它:
function B() {
this.value = 'test';
}
B.prototype.alert = function() {
console.log(this.value);
}
var b = new B();
b.alert();
如果你想使用不同对象的函数/方法,你应该给它一个参数(而不是像b
函数那样使用隐式的全局a.alert
变量):
var a = {
alert: function(x) {
console.log(x.value);
}
};
a.alert(b);
当你有方法时,或从中继承,例如:
var a = {
value: "a test",
alert: function() {
console.log(this.value);
}
};
// =============================
function B() {
this.value = 'test';
}
B.prototype.alert = a.alert; // mixin inheritance
var b = new B();
b.alert();
答案 1 :(得分:0)
没有最佳选择,关于你必须做的事情。
将b放在其原型中的第一个选项使A更加耦合到b。
第二个你正在改变它的比赛..你需要知道这个功能是做什么的,如果你没有文件,你可以传递一个没有这个功能所需的属性的对象,所以这不是一个例如,制作api的好选择。
Algo将this.alert设置为接收参数的函数会不会更高兴?
这一切都取决于你的需求......