JavaScript面向对象编程入门

来源极客网

 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作用完全不同

 

posted @ 2017-03-12 21:49  轴轴  阅读(182)  评论(0编辑  收藏  举报