基本对象/原型语法问题

时间:2012-09-01 17:50:18

标签: javascript

有人可以清理我的代码错误吗?我是一个全新的,只是试图尝试如何创建对象,原型,以及此命令在原型的上下文中引用的内容。但是,我的代码都没有在jFiddle上运行。我知道这段代码完全没有意义,但我只想找出文档在各种情况下打印的内容,以便更加具体地了解对象,原型,构造函数和“this”关键字的工作原理。但是NOTHING正在出现!

function Person(identity) {
    this.identity = "fellow";
    this.logYou = function() {
        document.write('hi');
    };
};
Person.prototype.logMe = function() {
    document.write(this.identity);
};

var Dude = new Person("stud");

Person.logYou();  
Person.logMe();
Dude.logMe();

4 个答案:

答案 0 :(得分:2)

function Person() {
  this.identity = "fellow";
  this.logYou = function() {
    document.write('hi');
  };
};

当您致电this.identity = "fellow";时,this关键字会引用正在运行该功能的上下文
因此,如果您在全局范围内调用该函数,this引用window对象:

Person();
alert(window.identity); // fellow

如果您实例化该功能,this关键字指的是新对象:

var Dude = new Person();
alert(Dude.identity); // fellow

所以函数Person没有属性identity 如果你想为你的功能提供一些属性:

Person.identity = "fellow";
alert(Person.identity); //  fellow

答案 1 :(得分:1)

logYoulogMe是存储在Person原型上的方法,以便继承对象可以调用该函数。您无法在logYou上拨打Person,但您可以做的是在其子级Dude上调用它:

Dude.logYou(); // hi
Dude.logMe(); // fellow

答案 2 :(得分:1)

这两行

Person.logYou();   
Person.logMe(); 

因为logYoulogMe不存在Person的属性而引发错误,因为代码停止执行。

Dude.logMe()Dude.logYou()将有效,分别打印fellowhi

答案 3 :(得分:1)

你不能打电话

Person.logYou();  
Person.logMe();

由于Person没有方法logYoulogMe,当您删除这两行时,您的代码将开始工作

相关问题