自有属性和共有属性:
自有属性:保存在当前对象内,仅归当前对象自己所有的属性。
共有属性:保存在原型对象中,归多个子对象共有的属性。
如果修改自有属性:才可以用子对象.属性名=新值。
如果修改共有属性:只能用原型对象修改–类型名.prototype.共有属性=属性值。
内置类型对象的原型对象:
js中包括11种内置类型/对象:String.Number.Boolean.Array.Date.Regexp.Math.Error.Function.Object.Global(在浏览器中被window代替)。
比如Array类型:
构造函数function Array(){...}
创建数组可以用var arr=new Array() 简写为var arr=[]
原型对象.Array.prototype
1.保存所有数组类型的子对象都能使用的数组函数
2.可查看原型对象Array.prototype
3.如数组的原型对象没有提供,可以自定义新函数向原型对象中添加新函数:
a.先定义一个函数通过强行赋值的方式添加到数组的原型对象中
Array.prototype.自定义方法=function(){
this->指向将来调用这个方法的某个子对象
}
b.用数组的子对象直接调用原型对象中新添加的自定义函数
arr.自定义方法();
函数的本质:
1.函数也是一个对象,对象中保存着函数的函数体代码
2.函数名只是一个普通的变量,函数名通过函数对象地址引用着函数对象
3.function在底层等效于new Function()
function 函数名(){...} 和 var 函数名=function(){...},function会被声明提前,var不提前,在原地翻译
等效于var 函数名=new Function()