创建构造器三种形式
<script>
function test(){}
var test = function(){}
var test = new Function(){}
</script>
<script>
function Point(x, y){
this.x = x; //定义一个x和y的坐标
this.y = y;
this.move = function(x, y){ //定义一个move方法,可以移动x,y
this.x = x;
this.y = y;
}
}
var point = new Point(0, 0);//定义一个point对象,创建一个point的点,[0,0]
point.move(1, 1); //调用方法,把[0, 0]移动到[1, 1]
var circle = {x: 0, y: 1, r: 1}; //x,y圆心坐标 r是圆的半径
point.move.apply(circle,[1,1]); //圆心移动到 1,2坐标 使用的this是circle对象(传入调用的对象[把函数调用的参数依次传入])
point.move.call(circle, 1, 1); //圆心移动到 1,2坐标 使用的this是circle对象(传入调用的对象[把函数调用的参数依次传入,直接跟在第一个参数的后面])
</script>
对象的原型 prototype __proto__
原型链
属性删除只会删除tom的,不会删除teacher的
<script>
如何判断一个属性来自于对象本身
tom.hasOwnProperty('job');
ES5原型继承
直接从原型对象创建新的对象,同事为这个对象指定一个原型,以proto为原型对象
Object.create(proto[,propertiesObject]);
</script>
==============================================================
面向对象编程