相关疑难解决方法(0)

JavaScript .prototype如何工作?

我不是那种动态编程语言,但是我写了很多JavaScript代码.我从来没有真正了解这个基于原型的编程,有没有人知道这是如何工作的?

var obj = new Object();
obj.prototype.test = function() { alert('Hello?'); };
var obj2 = new obj();
obj2.test();
Run Code Online (Sandbox Code Playgroud)

我记得很久以前我和人们进行了很多讨论(我不确定我在做什么)但是据我所知,没有一个类的概念.它只是一个对象,这些对象的实例是原始的克隆,对吧?

但是JavaScript中这个".prototype"属性的确切目的是什么?它与实例化对象有什么关系?

更新:正确的方式

var obj = new Object(); // not a functional object
obj.prototype.test = function() { alert('Hello?'); }; // this is wrong!

function MyObject() {} // a first class functional object
MyObject.prototype.test = function() { alert('OK'); } // OK
Run Code Online (Sandbox Code Playgroud)

这些幻灯片也非常有帮助.

javascript dynamic-languages prototype-oriented

1988
推荐指数
21
解决办法
49万
查看次数

使用关键字"this"的javascript函数和对象不起作用

我的问题是关于javascript中的函数和对象.我有三个问题源于彼此.在下面的例子中,我尝试在测试中访问'a'的值,但是我得到了未定义.但我创建了一个新的测试对象,然后我可以访问'a'值并更改它.

//create a function called test
         var test=function() {
           this.a=2
           this.b=3 };
           test.a//undefined
//create a object called test1 using 'new'
test1 = new test();
test1.a//2
//change the value of a in test1
test1.a=4
test1 //Object { a=4, b=3}
Run Code Online (Sandbox Code Playgroud)

在试图找到为什么会发生这种情况时,我遇到了这个javascript函数是对象吗?另外一个问题突然出现了.该SO问题的公认解决方案如下

var addn = function func(a) {
  return func.n + a;
};

addn['n'] = 3;
addn(3);
Run Code Online (Sandbox Code Playgroud)

我将'func.n'更改为'this',它不再有效

var addn=function func(a) {
 return this.n+a;
};
addn['n']=3;
addn(3); //NaN
Run Code Online (Sandbox Code Playgroud)

用'this'制作匿名函数也没有用

    //anonymous function
var addn=function(a) {
     return this.n+a;
    };
    addn['n']=3;
addn(3); //NaN
Run Code Online (Sandbox Code Playgroud)

为什么使用'this'不起作用? …

javascript function object this

1
推荐指数
1
解决办法
163
查看次数