gpt4 book ai didi

javascript - 构造函数中的方法和构造函数创建后函数中的方法有什么区别

转载 作者:行者123 更新时间:2023-11-30 08:39:27 27 4
gpt4 key购买 nike

第一个和第二个代码有什么区别?逻辑上有区别吗?

首先:

function test(val) {
this.val = val;
this.get = function () {
return "Hello world";
};
}

第二个:

function test(val) {
this.val = val;
}

test.get = function () {
return "Hello world";
};

什么时候向构造函数添加方法,什么时候在之后设置方法,为什么?

最佳答案

第二个向函数本身添加一个方法。这与第一个实例方法不同。

这两个在功能上是相似的:

function test(val) {
this.get = function () {};
}

function test(val) {
}

test.prototype.get = function() {};

两者都创建像这样工作的实例方法:

var x = new test("hello");
x.get();

但是,您的第二个选项只是在构造函数上创建一个属性,它不是测试创建对象的方法。它是一个静态方法。当您这样做时:

function test(val) {
this.val = val;
}

test.get = function () {
return "Hello world";
};

然后执行:

var x = new test("hello");
x.get();

你会发现x对象没有.get()方法。该方法仅在构造函数本身 test.get() 上。对于对象的新实例上存在的方法,必须将其分配给原型(prototype)对象或在创建对象后分配给对象(例如在构造函数或其他方法中)。在 test.get = function () {} 中直接附加到构造函数本身的方法只是构造函数的属性,不会被构造函数创建的对象继承。它们有点类似于其他语言中的类静态方法。它们不是实例方法。

关于javascript - 构造函数中的方法和构造函数创建后函数中的方法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28019942/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com