日期:2014-05-16 浏览次数:20473 次
?
function logs(str){document.write(str+"<br />")}
//利用“this 指向函数调用者”的特性,可以实现链式调用。jQuery 中大部分都是链式调
var oName = {name : "aa",age:999};
window.name = "I am window";
function showName(){
logs(this.name);
}
oName.show = showName; window.show = showName;
oName.show(); /* a */ window.show(); /* I am window */
//eg. 链式调用 模仿c++的 cout 输出函数cout<<aa<<bb<<cc<<endl;
oName.showName = function(){
logs(this.name);
return this;// JavaScript 中的“this”是函数上下文,不是在声明时决定的,而是在调用时决定的
};
oName.showAge = function(){
logs(this.age);
return this;
}
oName.showName().showAge();// aa 999
//方法 静态方法 实例方法 java 中的一样的特性 实例方法必须声明对象,对象才可以调用
function staticClass(){}; //声明一个类
staticClass.staticMethod = function(){ logs("static method")}; //创建一个静态方法
staticClass.prototype.instanceMethod = function(){ logs("instance method")} //创建一个实例方法
staticClass.staticMethod();
//staticClass.instanceMethod(); //语句错误, 无法运行
new staticClass().instanceMethod(); //必须进行实例化才可以调用
//动态原型方法的精髓在于使用 prototype 声明实例方法,使用 this 声明实例属性
function Car(){
this.color = "none"; //实例实属
if( typeof Car._initialized == "undefined"){
Car.prototype.showCar = function(){ //实例方法
logs(this.color);
}
}
Car._initialized = true; //静态属性 ? 实例属性?
}
logs(Car.color); //undefined
logs(Car._initialized); //undefined ?
var car = new Car();
logs(car.color); //none
logs(Car._initialized); //true ?
logs(car._initialized);//undefined ?
car.showCar(); //none
//*
Car._initialized是静态属性
1处报错,是因为你的Car._initialized属性的赋值是在类里面,JS是解释到哪儿执行到哪儿,
正因为如此,当有Car的实力产生的时候,静态属性_initialized被赋值,
所以2处为true,3处不输出是因为它是静态属性,不是实例属性。*/
//了解DOM
function onLoad(){
var oHtml = document.documentElement; //获取都HTML对新
var oBody = oHtml.lastChild; //获取到 body 对象 oHtml.firstChild;获取的是 head对象
var oDiv = document.createElement("div");//创建div对象
var oText = document.createTextNode("Hello DOM");//创建一个文本节点
oDiv.appendChild(oText); //将文本节点放到 div 对象中
oBody.appendChild(oDiv); //将div对象(带有文件节点)放到body对象中
}
//动态语音 -------eval
var sJson = "{name:'ziqiu.zhang'}";
eval("var oName="+sJson); // eval()方法可以将 JSON 格式的字符转化为 JavaScript 对象
logs(oName.name);
logs(eval("5+2")); //输出“7”