javascript对象的继承和object对象

2019-12-18  本文已影响0人  ssttIsme

javascript对象的继承和object对象

对象的一个类可以从现有的类中派生,并且拥有现有的类的属性或者方法,这个过程叫做继承。
被继承的类叫做父类或是基类,继承的类叫做子类。
(一个对象拥有另一个对象的属性和方法)
优点:提高代码的重用性、可维护性、逻辑性

一、Object对象

    document.write(Object); //function Object() { [native code] }
    document.write(typeof Object); //function
var obj=new Object();

属性:
1.constructor:创建对象的函数的引用(指针)。

    var obj=new Object();
    document.write(obj.constructor); // function Object() { [native code] }

2.prototype:对函数对象的对象原型的引用。是函数对象的默认属性。

    var obj=new fun();
    function fun() {

    }
    document.write(obj.prototype); //输出 undefined
    document.write(fun.prototype); //输出 [object Object]

A.可将对象的共享属性存放到代码段当中
B.可以实现继承
方法:
A.hasOwnProperty(property)判断对象是否具有某个属性

    var obj=new fun();
    function fun() {
        this.name="属性";
    }
    document.write(obj.hasOwnProperty("name")); //输出 true

B.isPrototypeOf(obj)判断该对象是否是另一个对象的原型。(用来检测对象的类型)

    var arr=new Array();
    document.write(Array.prototype.isPrototypeOf(arr)); //输出 true

C.instanceof运算符

    var arr=new Array();
    document.write(arr instanceof Array); //输出 true

二、继承

1.原型继承

    function Person() {
        this.name="名字";
        this.say=function(){
          document.write(this.name);
        };
    }
    function Teacher() {

    }
    Teacher.prototype=new Person();
    var zhangsan=new Teacher();
    zhangsan.say(); //输出 名字

2.对象冒充的形式继承

2.1call
object.function.call(obj2,参数1,参数2...)

让对象1的方法冒充成对象2的方法

    function Person() {
        this.name="名字";
        this.say=function(){
          document.write(this.name);
        };
    }
    function Teacher() {
        this.name="李四";
    }
    var people=new Person();
    var zhangsan=new Teacher();
    people.say.call(zhangsan);

输出 李四

    function Person() {
        this.name="名字";
        this.say=function(){
          document.write(this.name);
        };
    }
    function Teacher() {
       window.Person.call(this);
    }
    var zhangsan=new Teacher();
    document.write(zhangsan.name);
    zhangsan.say();

输出 名字名字

    function Person(name) {
        this.name=name;
        this.say=function(){
          document.write(this.name);
        };
    }
    function Teacher() {
       window.Person.call(this,"老师");
    }
    var zhangsan=new Teacher();
    zhangsan.say();

输出 老师

2.apply
object.function.apply(obj2,[参数1],[参数2]...)
    function Person(name) {
        this.name=name;
        this.say=function(){
          document.write(this.name);
        };
    }
    function Teacher() {
       window.Person.apply(this,["老师"]);
    }
    var zhangsan=new Teacher();
    zhangsan.say();

输出 老师

上一篇下一篇

猜你喜欢

热点阅读