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对象