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

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

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

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

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

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


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

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

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

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

//声明一个对象base
function Base(name)
{
	this.name=name;
	this.getName=function()
	{
		return this.name;
	}
}

//声明一个对象child
function 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中表示当前上下文,即调用者的引用,如下例:

//定义一个人,名字叫jake
var jake={
	name:"jake",
	age:26		
};
//定义另外一个人,名字叫Java
var Java={
	name:"Java",
	age:100
};
//定义一个全局的函数对象
function printName()
{
	return this.name;
}

//设置printName的上下文为jake,此时的this为jake
alert(printName.call(jake));
//设置printName的上下文为Jave,此时的this为Jave
alert(printName.call(Java));

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


声明对象的三种方式:

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

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

3、使用JSON;


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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值