javascript - 这些功能之间的区别

标签 javascript

这三个函数有什么区别?第二个函数中的 new 运算符有什么用?为什么应该使用第一个函数而不是第三个函数?

第一

var person = function(name){
    this.name = alert(name);
};

var k = new person('kkkk');
var j = new person('jjjj');

第二

var person2 = function(name){
    person2.name = alert(name);
};

var k2 = new person2('kkkk2');
var j2 = new person2('jjjj2');

第三

var person3 = function(name){
    person3.name = alert(name);

};

var k3 = person3('kkkk3');
var j3 = person3('jjjj3');

最佳答案

alert实际上,检查效果非常困难,因此在我的解释中,我将假设 alert(name)实际上是name 。 ( alert 返回 undefined ,而不是其输入)

第一个创建了一个可以像类一样使用的函数。然后您将其与 new 一起使用并制作了两个物体,kjthis这样做是为了让您可以访问 k.name === 'kkkk' 这样的名称和j.name === 'jjjj' .

第二个与第一个类似,但是k2.namej2.nameundefined 。您可以访问person2.name ,但这仅等于您上次实例化它时的名称;因此,person2.name === 'jjjj2' .

第三个与第二个类似,但不滥用 newk3j3undefined ,如果您尝试访问k3.name,您将收到错误消息和j3.name 。同样,您将能够访问最后传递给 person3 的值。与 person3.name .

关于javascript - 这些功能之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050216/

相关文章:

javascript - 如何使用ajax响应JSON数据?

javascript - 如何调试失败的 Angular 选择(或任何其他类型)绑定(bind)?

javascript - 正则表达式中的美元符号 "\$",字边界为 "\b"(PHP/JavaScript)

javascript - 如何为字符串生成唯一但一致的 N 位哈希(小于 64 位)?

javascript - 如何使用正则表达式验证表单上的输入文件名?

php - 来自 PHP 字符串的 JavaScript 数组

javascript - sequelize中如何返回非唯一的join表记录?

javascript - 访问包含正斜杠的对象属性

javascript - 使用 typescript 计算周数 - 算术运算的右侧必须为 'any' 类型

javascript - 用于匹配函数参数的正则表达式