javascript 是用c或c++编写的???
解决方案 »
- 请问如何解决一个页面中两个onload问题
- IE8 F12 脚本调试Developer Tool失效,总是任务栏显示执行,但窗口不出现!
- 他妈的气死了--没有权限??
- 没分了~自动注销问题~~~急急急!!
- javascript如何查找指定中文字符
- 一个函数调用出现的不响应问题请指教!
- 关于radio元素的问题,在线等待。。。。。。。
- 在NETSCAPE上怎么实现透明层?
- 主页打开的时候能不能有脚本给主页面的<head></head>之间加入<link rel="stylesheet" href="/Style.css">
- 如何修改访问的一个网址的内部链接的HTTP头信息
- 大侠请进 150分 很急的问题
- 实在搞不懂 JS 中的 designMode 属性
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<script language="javascript">
var o = new Object();
alert(o);
alert(o.prototype);
</script>
</body>
</html>
这个prototype对象在运行时是不可见的,也就是说,定义了之后,你无法直接使用prototype对象。那么,prototype对象有什么用呢?它的作用,就是当你去调用一个对象的函数或属性时,javascript首先会在这个对象的定义中查找,如果找不到,
他就会去找这个对象的prototype对象有没有这个定义,如果还找不到,他又会去找prototype对象的prototype,一直到对象没有prototype定义为止。是不是和函数继承的目的很象?这就是javascript的原型继承特性。
但是我们也看出了,这种查找方式,效率非常之低,尤其在prototype链很长的情况下。javascript 2.0会对此有所改进。另外,prototype的定义方式也很奇怪,他必须以一个对象实例(而不是类)的形式,绑定到其他类上。记得吗?prototype是定义时的,同时又是对象。例子:
o1 = function(){};
o2 = function(){};
o2.prototype = new o1;
可以去看开源的SpiderMonkey,c++写的,好像ff用的就是这个,附带提一句,如果是自己定义的Object.prototype中的成员,是可以枚举的。Object.prototype.clone = function(){
var o = function(){}
o.prototype = this;
return new o();
}
比如这个,只要你自己定义的对象继承自Object,都会发现带有clone的方法。并且alert(Object.prototype.clone)也是有的