JavaScript内核笔记02-对象、原型、this指针

来源:互联网 发布:淘宝网店开店技巧 编辑:程序博客网 时间:2024/06/05 23:05

JavaScript中没有类的概念,可以随意定义对象而不需要类。

JSON是JavaScript中对象的字面量,是对象的表示方法,通过JSON,可以减少中间变量,使代码结构更加清晰、直观。

JavaScript对象其实就是属性的集合,对象中的属性是无序的。

JavaScript对象就类似于Java语言中的Map,属性是由键值对组成。

JavaScript引擎在初始化时会构建一个全局对象,这个对象就是window。


原型(prototye),是JavaScript特有的一种概念,通过使用原型,JavaScript可以实现传统OO语言的继承,从而体现对象的层次关系。JavaScript本身是基于原型的,每个对象都

有一个prototype的属性,而prototype本身也是一个对象, 因此它本身也可以有自己的原型,这样就构成了一个链结构。

访问一个属性的时候,解析器需要从下向上的遍历这个链结构,直到遇到该属性,则返回属性对应的值,或者遇到原型为null的对象(JavaScript的基对象Object的prototype属性就

是null),如果此对象仍没有该属性则返回undefined。如下例:

//声明一个对象basefunction Base(name){this.name=name;this.getName=function(){return this.name;}}//声明一个对象childfunction Child(id){this.id=id;this.getId=function(){return this.id;}}<strong>//对象通过prototype实现继承Child.prototype=new Base("base");</strong>//实例化一个Child对象var c1=new Child("child");//c1本身具有getId方法alert(c1.getId());//由于c1从原型链上“继承”到了getName方法,因此可以访问alert(c1.getName());


this指针,在其他OO语言中表示对象本身,而在JavaScript中表示当前上下文,即调用者的引用,如下例:

//定义一个人,名字叫jakevar jake={name:"jake",age:26};//定义另外一个人,名字叫Javavar Java={name:"Java",age:100};//定义一个全局的函数对象function printName(){return this.name;}//设置printName的上下文为jake,此时的this为jakealert(printName.call(jake));//设置printName的上下文为Jave,此时的this为Javealert(printName.call(Java));

this的值并非在函数定义时确定,而是在函数被调用时确定。


声明对象的三种方式:

1、通过new操作符作用于Object对象,构造一个新对象,然后动态的添加属性,从无到有构建一个对象;

2、定义对象的“类”原型,然后使用new操作符来批量的构建新的对象;

3、使用JSON;


JSON全称为JavaScript对象表示法(JavaScript Object Notation),即通过字面量来表示一个对象。


0 0