javascript - 为什么我应该在 Person Constructor(和类似的构造函数)中使用 `this.name` 而不是 `name`?

标签 javascript oop constructor

简单的问题。我为什么要这样做...

var Person = function(name) {
    this.name = name;
    this.sayHello = function(){
        console.log('Hello, my name is ' + this.name); // <-- 
    }
};

而不是...

var Person = function(name) {
    this.name = name;
    this.sayHello = function(){
        console.log('Hello, my name is ' + name); // <--
    }
};

我还没有发现他们表现不同的情况。

最佳答案

因此,如果有任何函数重置名称,如果您不使用 this.name,则不会反射(reflect)出来。检查这个例子

var Person = function(name) {
  this.name = name;
  this.sayHello = function() {
    console.log('Hello, my name is ' + name);
    console.log('Hello, my name is ' + this.name);// <--
  }
};
Person.prototype.resetName = function(name) {
  this.name = name;
}

var me = new Person('A');
me.sayHello();
console.log('******');
me.resetName('Ayan');
me.sayHello();

关于javascript - 为什么我应该在 Person Constructor(和类似的构造函数)中使用 `this.name` 而不是 `name`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38861905/

相关文章:

java - 调用类的接口(interface)方法

c# - 用泛型对象初始化非泛型对象

android - 在 Android 中扩展 LinearLayout 时如何将其他参数传递给构造函数?

javascript - 原型(prototype)上的 getter 和 setter

javascript - AJAX/拒绝身份验证的 HTTP header ?

javascript - 模块模式中带有下划线的 Javascript “private” 变量名是否会与 underscore.js 冲突

javascript - 使用 JQuery 从 JSON 回复中读取数据

c++ - 将函数调用转发给成员是不好的做法吗?

c++ - 避免在方法调用中进行对象切片

javascript - 如何在移动设备上独立于 URL 栏的当前隐藏/显示状态获取视口(viewport)高度?