javascript:这段代码需要解释

标签 javascript class methods this self

谁能给我解释这段代码(出现警告 “嗨!我叫 Mark”):

function Person(name) {
    var self = this;
    this.name = name;

    function person(){
        alert("Hi! My name is "+self.name);
    }
    return {person:person};
}

new Person("Mark").person();

如果 return {person:person}; 被删除,为什么我看不到警报?这里的 person:person 是什么?

另外,为什么 this.name(不是 self.name)在 function person(){} 中未定义?

最佳答案

主要问题是你不应该返回 {person:person},但你不应该指定 return 或“return this;”。

new Person("Mark") 将创建一个 Person 实例,但函数 Person 返回 {person:person}。在 {person:person} 里面,正确的 one(value) 是方法。 var x = new Person("Mark") 将返回 {person: function person(){alert("Hi...")}。 x.person() 将显示警报。

关于javascript:这段代码需要解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071738/

相关文章:

javascript - 错误: Request failed with status code 401 axios in React JS

javascript - Schedule + OutputPanel + SelectOneRadio 问题

Python 在类中执行函数

javascript - 是否可以替代多个 ID?

java - 从 Java 中的两个不同类设置和获取静态变量

javascript - 在 Mongoose 外部的函数中返回数据

javascript - 动态添加字段的 jQuery 表单验证

c++ - 在类构造函数中调用命名 lambda 与调用实际私有(private)函数的优点

C# 方法返回与 lambda 中的变量

c# - 在方法重载之间共享一个变量?