newJavaScript中的关键字在第一次遇到时会非常混乱,因为人们倾向于认为JavaScript不是面向对象的编程语言.
我在这里阅读(Douglas Crockford)使用原型运算符向Javascript类添加方法也保存了内存.
然后我读到了John Resig的文章 "用一堆原型属性实例化一个函数是非常非常快的 ",但他是在谈论以标准方式使用原型,还是他在他的文章中谈论他的具体例子?
例如,正在创建此对象:
function Class1()
{
this.showMsg = function(string) { alert(string); }
}
var c = new Class1();
c.showMsg();
Run Code Online (Sandbox Code Playgroud)
比创建这个对象慢吗?
function Class1() {}
Class1.prototype.showMsg = function(string) { alert(string); }
var c = new Class1();
c.showMsg();
Run Code Online (Sandbox Code Playgroud)
PS
我知道原型用于创建继承和单例对象等.但是这个问题与这些主题没有任何关系.
编辑:对于JS对象和JS静态对象之间的性能比较它可能感兴趣的人可以阅读下面的答案.静态对象肯定更快,显然只有在不需要多个对象实例时才能使用它们.
我知道,严格来说,这不是数组类型的子类,但是这会以人们可能期望的方式工作,还是我还会遇到.length之类的问题?如果正常的子类化是一个选项,我有没有任何缺点?
function Vector()
{
var vector = [];
vector.sum = function()
{
sum = 0.0;
for(i = 0; i < this.length; i++)
{
sum += this[i];
}
return sum;
}
return vector;
}
v = Vector();
v.push(1); v.push(2);
console.log(v.sum());
Run Code Online (Sandbox Code Playgroud) 我已经使用Java很长一段时间了,很长一段时间我一直在使用GWT(Google Web Toolkit)进行Web开发.它的美妙之处在于我拥有了面向Java对象的构造,并且不会担心它如何被转换为GWT - 让Google来处理它.我对Javascript的了解已经足够,但并不是因为我可以用它进行大量的Web开发.后来我决定我必须对Javascript有更深入和更彻底的了解,这是一个真正的过山车 - 只是在我认为我得到了一些东西,有些东西来证明我错了 - 我只是被误解了.
有什么比stackoverflow更能表达我的关注的地方:我正在寻找一些资源和指向什么是Javascript等同于以下一些Java概念:
Class
instance of a class - object
Member variables
Getters
Setters
Abstract Class
Interface
Inheritance
Access Modifiers
Constructors
Run Code Online (Sandbox Code Playgroud)
我知道其中一些概念,但正如我所说 - 我相信我有一些概念上的困难.如果有人可以指出一个真正的javascript大师试图在这里查明这些概念,我将非常高兴.
我喜欢Steve Yegge的原型模型示例,并决定掀起一个快速的概念验证示例.
但是,我并没有真正想到的事情.虽然它非常适合动态指定对象的行为,并且是Steve的自以为是的精灵示例的简单解决方案,但我仍然在努力找出处理实例变量的最佳方法.
例如,假设我有一个AwesomeDragon对象.然后我想创建一个AwesomeDragonImmuneToFire对象,这样我就可以创建一个AwesomeDragon(AwesomeDragonImmuneToFire从AwesomeDragon继承属性)的新子节点,并将"ImmuneToFire"作为属性值为'true'.到现在为止还挺好.现在让我们说我想在参观附近的农村村庄时发送我的AwesomeDragon对象.这将涉及更新AwesomeDragon的"位置"属性.然而,在我这样做的那一刻,AwesomeDragonImmuneToFire也会起飞.
是否是在创建对象时覆盖实例值的最佳解决方案,例如立即将'AwesomeDragonImmuneToFire'的'position'值'置'到'position'的当前'get'值?
javascript ×4
arrays ×1
gwt ×1
java ×1
new-operator ×1
performance ×1
prototype ×1
subclass ×1