您的位置:首页 > 其它

几种排序算法的总结

2010-04-19 17:23 211 查看
接前面javascript初接触(二),继续简单了解javascipt。希望这部分之后,能和Qt中的QtScript、qml、QJS***
一些东西完成对接。能读懂Qt Manual中和javascript有关的东西。


Constructor

JavaScript中没有类的概念,那么
a = new Array(10);
t = new Date();


中的 Array 和 Date 又是什么东西?这么像C++中的类。
恩,似乎真的不太好接受,这就是Constructor函数。和其他函数一样

function Person(name)
{
this.name = name;
}


然后配合 new 操作符使用
p = new Person("Qter");


new 操作符后面必须跟着一个函数调用。它创建一个新的没有属性的object,然后调用这个函数。
被设计用来做这个工作的函数,称为 Contructor。其主要目的是初始化新创建的object。


Prototype

没有类,应该也就没有继承。不过它有个叫Prototype的东西
接前面的例子:

代码
运行结果:
Person.constructor;
function Function() {
[nativecode]

}
Person.prototype.constructor;
function Person(name) {

this.name = name;

}
p.constructor;
同上
new 操作符将 Person 的prototype的属性也弄到了新创建的object中。
继续

如果我想给Person加个成员函数怎么办?
function Person(name)
{
this.name = name;
this.output = function(){return "Hello " + this.name;}
}
p = new Person("Qt")
p.output()


这样以来,我们创建的每一个Person的对象都会生成一个函数属性。不是我们需要的,我们需要是,所有的对象共享同一个函数属性
于是,将其加到Person的prototype中
function Person(name)
{
this.name = name;
}
Person.prototype.output = function(){return "Hello " + this.name;}
p = new Person("Qt")
p.output()


似乎还是挺神奇的哈。那么,这个属性?两种情况下还有什么区别呢?

语句
前者
后者(使用prototype)
p.hasOwnProperty("name")
true
true
p.hasOwnProperty("output")
true
false
"output" in p
true
true
继续

如果,我试图写p的output属性会怎么样?
p2 = new Person("Python")
p2.output = "Qt"


恩,不会影响其他object。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: