对象返回未在javascript中定义

dav*_*der 0 javascript

嗨,我想尝试在javascript中解决一些基本的东西,我想创建相当于一个类看到下面:

var myTest = {
  myTester:"testing",
  testCode:function(){
    return myTester;
 }
};
Run Code Online (Sandbox Code Playgroud)

当我打电话给alert(myTest.testCode()); 我得到错误时myTester未定义;

我也试图设置myTester的值也有类似的麻烦,我想在这里实现的是这样的事情:

var myObj = myTest.testCode();
var tester = myObj.myTester;
Run Code Online (Sandbox Code Playgroud)

因为myObj是一个我应该创建的对象能够访问它的值,但我通常不做javascript只是jQuery,我试图在纯javascript创建一个应用程序只是为了大脑饲料,并会欣赏一点指导,尤其是你做什么实际上叫这个,是一个类????

谢谢

Fel*_*ing 5

你必须访问this:

var myTest = {
  myTester:"testing",
  testCode:function(){
    return this.myTester;
 }
};
Run Code Online (Sandbox Code Playgroud)

说明:在每一个功能,this是指函数被调用的背景下,如果你调用一个函数,func()然后this将引用全局对象(window浏览器).
如果你打电话,obj.func()那么this将参考obj.

这是函数和对象之间的唯一连接.将函数定义为对象属性的这一事实并不会使函数知道该对象.

函数是JavaScript中的第一类对象,因此不绑定到任何对象(或类)(就像其他语言一样,例如Java).


var myObj = myTest.testCode();
var tester = myObj.myTester;
Run Code Online (Sandbox Code Playgroud)

不起作用,因为myTest.testCode()返回字符串"testing"(并且字符串没有myTester属性).如果你想使这段代码工作,你将不得不返回thistestCode:

var myTest = {
  myTester:"testing",
  testCode:function(){
    return this;
 }
};
Run Code Online (Sandbox Code Playgroud)

但是,两条线是相同的

var tester = myTest.myTester;
Run Code Online (Sandbox Code Playgroud)

我建议阅读一些JavaScript的介绍,例如MDC - JavaScript指南,特别是关于对象的阅读.

PS:为了非常正确,JavaScript中不存在类.只有对象和构造函数.