关注前端 JavaScript进一步学习(二)

为了提高使用效率,JavaScript提供了下列内置对象。
Object是通用基础对象,可以使用它来穿件简单的静态对象,简写为{}
var obj =new Object() 等同于 var obj={ }
Function是被所有使用参数的对象,也是在脚本中定义函数时所创建的对象,其简写为function(){ }
var myFunction=new Function('','') 效率低下,不建议使用
function myFunction(){ } //推荐使用这个方法定义函数
Array 是一种特殊的属性和方法的集合,比如使用它的length属性可以迭代才做这类对象,使用方括号加序号也可以访问它的属性,其简写为[]
var array=new Array() 等同于 var array=[]
String 、Boolean、Number分别用来表示字符串,布尔值,数字。
除此之外还有 Math、Date、RegExp 及其他内置对象。
JavaScript是基于原型的面向对象。这就导致无法以一个类扩展出另一个类的底层类结构,在JS中,继承是通过简单的从一个对象原型向另一个对象原型复制方法来实现的。
例如:
//创建一个对象
var person={};
person.getName=function() {alert("Person Name");};
//创建另一个对象
var student={};
//将方法简单复制
student.getName=person.getName;
//重新覆盖getName方法
person.getName=function( alert("Person1 Name"););
//调用方法
student.getName();
person.getName();
由于是简单复制。在给student的getName赋值的 时候是之前的方法,所有运行结果先生Person Name,然后是Person1 Name。
对象只有成员访问操作。
再解释下原型,了解JS的原理
function Object2(){
}
//其实这里隐含了一句话
//Object2.prototype=new Object() ; //隐含着将属性执行Object对象
function Object3(){
}
Object3.prototype=new Object2() ; //执行Object2对象
Object.prototype.foo=..... //给object的foo属性赋值
aObj=new Object3(); //实例化一个Object3对象
aObj.foo(); //调用Object3的foo。会一层一层往上寻找,经过Object2发现没有再找到Object。
Object2.prototype.foo=.... //给Object2定义foo属性
aObj.foo(); //一层一层往上寻找,经过Object2发现了,调用Object2的属性。
原型只存在于function中,它是指就是一个对象被创建后引擎默认创建一个空的prototype对象,原型中读的时候从原型链上读(一层一层网上寻找),写的时候往自己里面写(给自己的属性赋值)。。
Tags: 

延伸阅读

最新评论

发表评论