相关疑难解决方法(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万
查看次数

在JavaScript中使用'prototype'与'this'?

有什么区别

var A = function () {
    this.x = function () {
        //do something
    };
};
Run Code Online (Sandbox Code Playgroud)

var A = function () { };
A.prototype.x = function () {
    //do something
};
Run Code Online (Sandbox Code Playgroud)

javascript prototype this

765
推荐指数
14
解决办法
11万
查看次数

JavaScript的"新"关键字被视为有害吗?

在另一个问题中,用户指出该new关键字使用起来很危险,并提出了一种不使用的对象创建解决方案new.我不相信这是真的,主要是因为我使用了Prototype,Scriptaculous和其他优秀的JavaScript库,并且每个人都使用了new关键字.

尽管如此,昨天我在YUI剧院观看道格拉斯·克罗克福德的演讲,他说的完全一样,他new在代码中不再使用关键字(Crockford on JavaScript - Act III:Function the Ultimate - 50:23分钟).

使用new关键字"不好" 吗?使用它有哪些优缺点?

javascript

566
推荐指数
12
解决办法
11万
查看次数

原型继承优于经典的好处?

所以这些年来我终于停止了我的脚,并决定"正确"学习JavaScript.语言设计中最令人头疼的元素之一是它的继承实现.有Ruby经验,我很高兴看到闭包和动态打字; 但是对于我的生活来说,无法弄清楚使用其他实例进行继承的对象实例会带来什么好处.

javascript oop inheritance language-design prototype-programming

264
推荐指数
4
解决办法
7万
查看次数

类在基于原型继承的语言中使用

下面这个问题的答案做了伟大的工作,解释之间的差异classical inheritanceprototypal inheritance.这是我感兴趣的,因为我开始使用Java,但转移到Javascript.

在他的回答中,他说prototypal inheritance,"关于课程的所有业务都会消失.如果你想要一个对象,你只需要写一个对象."

然而,关于如何在Javascript中"编写类" 有很多文档和问题.

为什么要推动语言不是.我正在寻找具体的例子,在这种情况下,使用JS应用程序中的类在这种原型语言中更为明智,以及将方形钉固定在圆孔中的好处.正如Aravind所说的那样,为什么人们通过将Javascript与其他人进行比较来学习Javascript,而不是因为它的目的......并且为什么这种做法似乎受到鼓励?

底线问题:为什么要在ECMAScript 6中引入类?

javascript inheritance prototypal-inheritance

9
推荐指数
2
解决办法
303
查看次数

推荐的方法来扩展Paper.js中的类

是否有推荐的方法来扩展Paper.js中的类?特别是,我有兴趣扩展Path

对不起,如果我的术语是不正确的,但我essentailly询问纸同样的问题正在被询问大约三在这里

javascript paperjs

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

有人可以解释javascript原型继承

我想知道是否有人能够function.prototype在OO javascript中解释这个东西(thingie !! ??).

我来自服务器端编程背景,可能是我没有抓住原型的整个概念,

给出以下代码片段:

var animate=function(){};
animate.angular=function(){/*does something here*/};
animate.circular=function(){/*does something here*/};
Run Code Online (Sandbox Code Playgroud)

var animate=function(){};
animate.prototype.angular=function(){/*does something here*/};
animate.prototype.circular=function(){/*does something here*/};
Run Code Online (Sandbox Code Playgroud)

据我所知,后两个函数都可以通过调用animate.angular(/*args*/),animate.circular(/*args*/)所以,我想我的问题是,以第二种方式定义函数的优点是什么?以及他们如何或为何与众不同?

希望我有道理......

编辑: 谢谢你所有的启发性答案,很难在这里判断答案是"正确的",所以我要标记一个我觉得最有贡献的答案......

你们当然给了我更多思考的东西......

javascript oop

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

原型函数与javascript中的普通函数有何不同?

可以在对象原型上声明Javascript函数,如下所示:

<object name>.prototype.<variable name>=function(){
//
//
}
Run Code Online (Sandbox Code Playgroud)

它如何与以下声明不同?

<object name>.<variable name>=function(){
//
//
}
Run Code Online (Sandbox Code Playgroud)

原型函数与javascript中的普通函数有何不同?

javascript

7
推荐指数
2
解决办法
1583
查看次数

面向对象的JavaScript示例

我知道一般的面向对象编程原则,如封装,继承,多态,抽象等

但是现在想从JavaScript的角度理解这些概念.有人可以采用一个非常基本的例子来运行它们如何在JS上下文中工作(封装,继承,多态,抽象)

我在网上看了很多关于这些的文章,但文章让我更加困惑.

谢谢.

html javascript css

5
推荐指数
3
解决办法
2万
查看次数

创建模块化模式对象的继承

我正在尝试在对象之间创建某种继承:

var foo = (function(){

    function doFooStuff(){
        console.log(arguments.callee.name);
    }

    return {
        doFooStuff: doFooStuff
    }

})();

var bar = (function(){

    $.extend(this, foo);

    function doBarStuff(){
        console.log(arguments.callee.name);
        doFooStuff();
    }

    return {
        doBarStuff: doBarStuff,
    }

})();

bar.doBarStuff();
bar.doFooStuff(); //<-- Uncaught TypeError: 
                  //Object #<Object> has no method 'doFooStuff' 
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/wRXTv/

为什么不在doFooStuff这里访问?你会推荐另一种方法$.extend吗?

javascript jquery

5
推荐指数
2
解决办法
3011
查看次数

一次排序多个数组

我有3个数组:

  • 阵列1是"名字"约翰,吉姆,杰克,吉尔

  • 阵列2是"年龄"25,30,31,22

  • 阵列3是"性别"男性,男性,男性,女性

我将这些都列在一个带有可排序标题的表中.现在排序工作正常,它按"名称"列进行排序.我怎样才能对"年龄"和"性别"数组进行排序以保持正确.我需要同时对所有3个进行排序.

_nameArray.sort(function(a, b){
    return ((a < b) ? -1 : ((a > b) ? 1 : 0));
})
Run Code Online (Sandbox Code Playgroud)

希望它解释得很好.

没有结构不能改变,它的方式必须是3个数组,而不是一个,只是按数组中的字段排序.

javascript jquery

2
推荐指数
2
解决办法
2575
查看次数