来源极客网
1 function Person() { 2 var _this = {} //创建一个空的对象,接着我们利用这个"空的对象"承载Person的属性和方法 3 _this.sayHello = function(){ 4 alert("PHello"); 5 } 6 return _this; 7 } 8 9 function Teacher_1() { 10 var _this = Person();//注意这里的语法小括号 11 return _this; 12 } 13 14 //演示覆写父类中的方法语法 15 function Teacher_2() { 16 var _this = Person(); 17 _this.sayHello = function () { 18 alert("Thello"); 19 } 20 return _this; 21 } 22 //演示子类怎样调用父类的方法 23 function Teacher() { 24 var _this = Person(); 25 var surperSay = _this.sayHello; //1.通过"赋值"的代码思想进行处理 26 _this.sayHello = function () { 27 surperSay.call(_this) //2.通过call()方法进行强行调用 28 alert("Thello"); 29 } 30 return _this; 31 } 32 33 //调用我们创建对象Teacher 34 var t = Teacher(); 35 t.sayHello();//调用到我们在Person中声明的sayHello
自己随便定义html运行一下上面的代码,感受一下
1 //演示用一个函数将一个function包裹起来,然后执行它 2 //第5行增加传参的情况怎样处理 3 (function(){ 4 var n = "ime"; 5 function Person(name) { 6 var _this = {} //创建一个空的对象,接着我们利用这个"空的对象"承载Person的属性和方法 7 _this._name = name; 8 _this.sayHello = function(){ 9 alert("PHello" + this._name + ":"+ n); 10 } 11 return _this; 12 } 13 window.Person = Person; //表示将函数Person"挂"给全家变量, 14 }());//大括号右边的一对小括号,是必须有的,表示自运行 15 //演示了 16 function Teacher(name) { 17 var _this = Person(name); 18 var superSay = _this.sayHello; 19 _this.sayHello = function () { 20 superSay.call(_this); 21 alert("Thello" + _this._name); 22 } 23 return _this; 24 } 25 var t = Teacher("iwen"); 26 t.sayHello();
例子3
//字面形式的Javascript面向对象 var person = { name:"James", age:30, eat:function(){ alert("能吃") } } //给person添加一个属性 function Person(){ } //使用Person的原型链添加属性和方法 Person.prototye={ name="James", age:30, eat:function(){ alert("我在吃"); } } //使用new 使用这个对象 var p = new Person();//new仅仅是一个关键词,和Java,C#中的new作用完全不同