js--面向对象

前言

JavaScript的目的是分析对象,然后对对象的解释。所以,面对对象这方面也比较重要,这篇博客侧重介绍一些面向对象的例子。

内容

在JavaScript中的对象就是键值对,其方法是值为函数的属性。

面向对象

在JavaScript中也存在继承,相比较C系继承(C++、C#、Java…,这些都是基于类的继承,即继承模版)而言,在JavaScript中继承的是原型,所谓原型,就是在整个板块有很多使用方法与的变量name、age等字段,这些都是对象,构造函数设置原型为这个对象,创建出来的对象就继承与这个对象(从对象那里继承),但是都是占据了对象不同地方的内存,即每创建一个这样的对象,就会浪费一个这样的内存空间。
其优点是:原型更加符合人们的常规思维。

    var o ={
        say:function(){
        if(this.name && this.age && this.sex)
        alert("您好,我是" + this.name + ",我今年"+this.age + "岁了,我是" + this.sex +"生");
        },
        get_Name : function(){
        if(this.name) return this.name;
        }
        set_Name : function(){
        if(this.name) this.name = value;
        }
        var Person =function(name,age,sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
        };
        Person.prototype = o;
        var p1 = new Person("赵晓虎",19,"男");
        p1.say()
    }

原型链

上文中介绍了原型,既然有原型,那么原型之间也肯定存在联系,所以这些联系的总集称之为原型链。
如果需要原型,那么就一定要有函数;每一个对象有一个属性叫prototype(在IE中__proto__
这个属性就是这个对象的原型alert(o.__peoto__)
对象有原型,那么原型也有对象,原型也有原型
所有的函数是对象,继承自Function.prototype
Function.prototype是对象,继承自Object.prototype
Object.prototype是对象,继承自null
obj是对象,继承自Object.prototype

F u n c t i o n F u n c t i o n . p r o t o t y p e F u n c t i o n F u n c t i o n . p r o t o t y p e

O b j e c t F u n c t i o n

原型链
能看懂这个原型链的图片,那就恭喜您,因为你已经懂得了原型链,下面来个例子,加深对原型链的了解:

Js的访问规则
o.方法()
首先在o当前这个类型中寻找改成元的定义,如果存在该成员的定义,那么就直接使用该成员,如果该成员不在当前类型中,就访问其原型(原型链中的上一级),以此类推,直到null为止

<script style = "text/JavaScript">
    var o {name:"我是祖宗"};

    var f1 = function(){
        this.name = "我是亚当";
    };
    f1.prototype = o;
    var foo1 = new f1();

    var f2 = function(){
        this.name = "夏娃";
    }
    var foo2 = new f2()
    foo2.__proto__ = foo1;

    var f3 = function(){
        this.name ="我是人类";
    }
    f3.prototype = foo2;
    var foo3 = new f3();
    alert(f3.name);
</script>

总结

介绍+图片+代码例子的介绍,三方面结合能对原型链有一个大致的了解了。

end

谢谢您的阅读!

猜你喜欢

转载自blog.csdn.net/luojun13class/article/details/81093220