javascript - 在原型(prototype)的构造函数中初始化属性时获取 'undefined'

标签 javascript jquery prototype

我开始使用原型(prototype),如果我使用代码,我得到了预期的结果:

$(document).ready(function() {
    var MyObject = new MyClass();

    MyObject.assign();

    MyObject.console();
});

function MyClass() {
    var myProperty;
};

MyClass.prototype = {

    assign: function() {
        this.myProperty = 'Hello world!';
    },

    console: function() {
        console.log(this.myProperty); // Shows 'Hello world!'
    }
};

但是下面的代码返回undefined。我不明白为什么,有人可以帮助我吗?

$(document).ready(function() {
    var MyObject = new MyClass();

    MyObject.console();
});

function MyClass() {
    var myProperty = 'Hello world!';
};

MyClass.prototype = {

    console: function() {
        console.log(this.myProperty); // Shows 'undefined'
    }
};

最佳答案

在第一段代码中,您实际上创建并定义了该属性:this.myProperty = 'Hello world!';在此之前,该属性不存在。

在第二段代码中,您从未定义属性。

将其更改为:

function MyClass() {
    //NOT "var", but "this."
    this.myProperty = 'Hello world!';
};

另一种方法(如果 myProperty 的值应该默认为某个值,是将其放入原型(prototype)中:

MyClass.prototype = {

    //Now all instantiations will have this preset    
    myProperty: "Hello World",

    console: function() {
        console.log(this.myProperty);
    }
};

关于javascript - 在原型(prototype)的构造函数中初始化属性时获取 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26187373/

相关文章:

javascript - 如何使用正则表达式匹配新生成的名称

javascript - 带有返回赋值的箭头函数即使有括号也不起作用

javascript - Angularjs 从服务渲染 iframe

Jquery toastr onHidden 函数

uitableview - 使用 Storyboard在 xamarin ios 中创建和使用自定义原型(prototype)表格单元格

javascript - 将 @grant 添加到 GM 脚本会破坏 XMLHttpRequest.prototype.open 的过载吗?

javascript - 用 ContentEditable 属性替换 textarea - Javascript 运行多次

javascript - 如何以编程方式更改 CSS 以限制其范围?

javascript - 等待 ajax 请求完成

javascript - `-ms-touch-action` 样式不应用 $.css()