了解JavaScript Prototypes的工作原理

时间:2015-05-17 19:51:13

标签: javascript prototype

我正在搞乱原型,以便更好地了解它们的工作原理。我无法解决为什么我无法调用hideHeader,而我可以访问变量(this.header.el)

function App() {
    this.init();
    this.el = document.getElementById('box');
}

App.prototype.init = function () {
    document.write('hello world');

    this.header = new Header();

    this.header.hideHeader();
    this.header.el.style.display = 'none';
};

new App();

function Header() {
    this.el = document.getElementById('header');
}

Header.prototype.hideHeader = function() {
    this.el.style.display = 'none';
}

2 个答案:

答案 0 :(得分:9)

您应该重新排序代码,以便在尝试调用之前定义 results = 'hide'

像这样:

hideHeader

JavaScript是一种解释型语言,它没有编译。它在加载到内存中时按顺序进行评估。

答案 1 :(得分:3)

你只需要改变你做事的顺序。例如:

function App() {
    this.init();
    this.el = document.getElementById('box');
}


function Header() {
    this.el = document.getElementById('header');
}

Header.prototype.hideHeader = function() {
    this.el.style.display = 'none';
}

App.prototype.init = function () {
    document.write('hello world');

    this.header = new Header();

    this.header.hideHeader();
    this.header.el.style.display = 'none';
};

new App();
<div id="header"></div>
<div id="box"></div>