js理解面向对象

Posted gonghong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js理解面向对象相关的知识,希望对你有一定的参考价值。

一、什么是对象:

  在java、actionscript等语言中都有对象(类的概念),我的理解是对象就是属性和方法的集合,在编程语言中有一句话叫一切皆对象,Object对象是所有对象的基类,都是继承Object;

二、在js中对象的创建:

1、用new关键字创建对象:

var obj=new Object();

new 关键字是语法糖,他创建了一个实例对象,继承了Object的属性和方法,以下是new 经历哪些步骤和代码模拟

<script type="text/javascript">
    function Persion(){
        /**
        *func:构造函数
        */
        this.dec="这是描述";
    }
    Persion.prototype.sayHell=function(){
        console.log("您好");
    }

    function desaginNew(tt){
        /*
        *func:模拟new关键字;
        */
        //第一步:创建新的对象;
        var obj={};
        var creatObj=[].shift.call(arguments);

        //第二步:改变this指向,把新的对象的_proto_指向Persion对象的prototype原型对象;
        obj._proto_=creatObj.prototype;

        //第三步:执行构造函数的代码为新对象添加属性和方法;
        Persion.call(obj);

        //第四步:返回对象;
        return obj;
    }
    var newPersion=desaginNew(Persion);
</script>

 

2、用字面量创建对象:

var obj={name:"",age:"",say:function(){}};

3、构造函数创建对象:

构造函数:在java语言中类的定义中都有构造函数,在js中也有构造函数的概念,Object对象都有constructor构造函数方法;

js中Object对象都有以下属性和方法:

1、constructor:构造函数属性,它指向了Object()函数;

2、hasOwnProperty:判断是否是对象自身属性和方法;

3、isPrototypeOf:判断是否是某个对象的子对象即继承某对象;

    function Persion(){
        /**
        *func:构造函数
        */
        this.name="名字";
        this.say=function(){
            console.log("您好");
        }
    }
    //自身属性要实例化后才能访问属性和方法;
    console.log(new Persion().name);//"名字"
    console.log(new Persion().say());//"您好;

4、es6中新增class关键字创建类

 

 

以上是关于js理解面向对象的主要内容,如果未能解决你的问题,请参考以下文章

全面理解js面向对象

浅谈对Js面向对象的理解

简单粗暴地理解js原型链--js面向对象编程

简单粗暴地理解js原型链--js面向对象编程

简单粗暴地理解js原型链--js面向对象编程

简单粗暴地理解js原型链--js面向对象编程