javascript - 原型(prototype)与 JavaScript 中的应用

标签 javascript

如果我需要一个对象到另一个对象中以便在函数中使用,哪个是最好的?

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)。

最佳答案

原型(prototype)要容易得多,但我会以相反的方式使用它:

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();

关于javascript - 原型(prototype)与 JavaScript 中的应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22579426/

相关文章:

javascript - 如何在ckeditor中设置默认字体名称preety

javascript - AngularJS 应用程序只初始化一半的时间,不会抛出任何错误

javascript - Javascript 中的数字格式+转换?

c# - ASP :Textbox off focus?

javascript - $.Get 方法在each() 循环中不成立

javascript - 当 ui-select 标记为必需时,如何重置 Angularjs ui-select 组件所有选择而不显示红色错误突出显示

javascript - yarn 和 npm 的主要区别是什么?

javascript - 添加新按钮到 Tinymce 工具栏 C#

javascript - 使用条件 javascript 隐藏整个 div(缺少头像图像)

javascript - 如何根据 Angular 的路线给 div 一个类?