JavaScript 学习笔记十四 this特性,静态方法 和实例方法,prototype
2017-05-09 00:00
716 查看
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处不输出是因为它是静态属性,不是实例属性。*/
相关文章推荐
- JavaScript 学习笔记十四 this特性,静态方法 和实例方法,prototype
- JavaScript 学习笔记十四 this特性,静态方法 和实例方法,prototype
- web开发-javascript编程prototype、this、ajax、json、结构体和数组-学习笔记十四
- Java程序猿的JavaScript学习笔记(5——prototype和Object内置方法)
- Spring学习笔记九--静态工厂方法和实例工厂方法
- python学习笔记-实例方法、类方法、静态方法、属性方法
- 静态方法与实例方法共享设计-jquery学习笔记
- Ext学习笔记 - NameSpace,类实例属性,类实例方法,类静态方法
- Java8学习笔记 — 其它新特性【接口默认方法(静态方法)、重复注解、类型注解】
- Java程序员的JavaScript学习笔记(5——prototype和Object内置方法)
- JavaScript this特性,静态方法 和实例方法,prototype
- [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名
- Python学习笔记——实例方法和静态方法
- [原]Java程序员的JavaScript学习笔记(5——prototype和Object内置方法)
- Ext学习笔记01 - NameSpace,类实例属性,类实例方法,类静态方法
- Ext学习笔记01 - NameSpace,类实例属性,类实例方法,类静态方法
- java学习笔记4--java 静态方法和实例方法的区别
- JavaScript 学习笔记(十四) 正则表达式
- JavaScript学习笔记(十四)
- JavaScript的OO特性:静态方法