JavaScript面向对象

Posted

tags:

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

面向对象是一种对现实世界理解和抽象的方法。就是很抽象吧。当然,javascript·中也有面向对象。

1、创建对象的方法

(1)常规创建对象的方式

var o = new Object();

这样就创建了一个对象,不过,对象也要分类型(当然类型是靠自己定义的),这样创建的对象,都是object类型的,使用中,难以区分不同类型的对象。

 

(2)通过构造函数来创建对象 

function Person(name){
            this.name=name;                           //添加属性   
……
}

这样就创建了一个person对象,其中,包含着person对象的属性,其实和c#都差不多

 

(3)通过对象字面量创建对象

        var p1 = {
            name: ‘name‘,
            email: ‘163.com‘,
Func: function () { alert(‘this.age); } };

对象可以看作是一个键值对集合,可以用 for……in循环遍历(for in循环相当于c#中的foreach循环)

 

2、原型对象

原型对象:一个难以理解的概念,大概就是一个 prototype 定义的一个_proto_属性,来指向上一层对象,具体说明:http://www.cnblogs.com/shuiyi/p/5305435.html

关键是原型对象的作用:

  -->创建原型链,通过原型链去查找上一层的属性,或者方法。

       原理:当获取一个对象的属性时,系统首先会检测对象是否直接包含这个属性,不包含再去原型中查找这个属性

  这样,就实现了继承,在js中,没有类的概念,继承是通过对象与对象之间实现的

var p1=new Person();   Man.prototype=p1;   //实现了Man继承Person

 

3、闭包

   概念:在一个函数内部又定义一个函数,内部函数能访问外部函数作用域范围内的变量,这个内部函数就叫做闭包
   作用:改变变量的作用域 模拟面向对象

 

4、this指针

this在JavaScript中,使用犹为重要。

this指向的对象总结:

(1)在全局执行环境中使用this,就是为window对象

(2)如果函数没有明显的作为非window对象的属性,而只是定义了函数,不管这个函数是不是定义在另一个函数中,这个函数的this仍然表示window对象(就是因为没有注册给对象,所以才表现出window属性)
如果函数显式地作为一个非window对象的属性,那么函数中的this就表示这个对象

(3)当通过new运算符来调用函数时,函数被当做一个构造函数,this指向构造函数创建出来的对象

 

5、Error对象

    var custError = new Error(‘自定义错误‘);      //创建error类的实例
        
    throw custError;                              //抛出异常

 

当然,JavaScript对象中还有一大堆的对象,还有方法,不过初学基本是涉及不到的,就了解到基本的一些。

 












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

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象

常用Javascript代码片段集锦

JavaScript单行代码,也就是代码片段

javascript 仿面向对象编程实例代码(私有,公共变量。。。)

JavaScript对象原型链继承闭包