javascript 原型对象与prototype的关系
Javascript中的继承机制是所谓的原型对象继承,通过属性访问机制的特殊性来实现继承的。之前我一直以为所有对象的原型对象就是prototype所指的那个对象。后来在看javascript设计模式的时候发现作者注中有一句话与我之前的理解不同,他说“每个对象都有一个原型对象,但这并不意味着每个对象都有一个prototype属性”。看完我就有点迷茫了,决定彻底把这个死人的原型继承搞搞清楚。然后翻了些文章和书籍,最后终于在javascript权威指南第五版中找到了个人 认为比较权威的解释。关于原型链和属性访问机制我就不再阐述了,这方面可以看看Rocky的文章 写的蛮清楚的 http://blog.csdn.net/rocky_j2ee/archive/2009/03/21/4012385.aspx
那我们先从创建对象说起,用new操作符创建对象的时候javascript会做3件事:
首先是创建一个空对象(empty object),
然后对这个空对象的原型对象进行赋值,
最后把这个空对象赋值给构造函数的this属性且运行这个构造函数。
function Person(name) {
this.name = name;
}
var p = new Person(); 相当于以下步骤:
1. Var p = {};
2. p.[[prototype]] = Person.prototype //这一步是伪代码,实际上一个对象的原型对象是不能通过代码来访问的,
//这里只是为了说明创建对象的步骤
3. p.methodName = Person //这样的话Person的this就会指向p
p.methodName();
如果你对第二步不是很明白,那么先把代码放一放,接下来我会详细解释下第二步原型对象的赋值(或者说构造函数和原型对象的关系):
上面我提到过在创建完一个空对象后,会初始化这个空对象的原型对象,javascript会把构造函数的一个叫做prototype的属性所指向的对象赋值给当前空对象的原型对象。所有的function都有一个prototype属性,当一个function被定义之后这个属性会被自动的创建和初始化。一个function 的prototype属性的初始值是一个对象(an object),这个对象只有一个属性叫
相关文档:
最近一直为此头痛,姑且把我能想到的东西都写出来吧。由于不是简单把页面上手写的script转为javascript添加,我们需要考虑的东西主要有两个:加载的顺序,加载前后脚本的运作。
先说第一个,假如我们已有一加载机制了,要加载一个新模块,当然新模块是在另一个JS文件中。这时,我们可以描述为:
loader ---> a.js
这个加 ......
javascript中event.keycode
keycode 8 = BackSpace BackSpace
keycode 9 = Tab Tab
keycode 12 = Clear
keycode 13 = Enter
keycode 16 = Shift_L
keycode 17 = Control_L
keycode 18 = Alt_L
keycode 19 = Pause
keycode 20 = Caps_Lock
keycode 27 = Escape Escape
keycode 32 = space space ......
1. 定义一个用于输出JavaScript代码 的Servlet类。
package com.mycompany.response.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServle ......
第一种方法如下
if (typeof beforeReject != 'undefined' && beforeReject instanceof Function) {
beforeReject(nextStep);
}
第二种方法如下
if (对象名.方法名)
{
//方法存在
对象名.方法名();
}
第三种方法:
if(typeof(nl.onBlue)=="function")
{
//存在
}
......
<SCRIPT>
//判断y年的农历中那个月是闰月,不是闰月返回0
function leapMonth(y){
return(lunarInfo[y-1900]&0xf);
}
var lunarInfo=new Array(
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0 ......