function Car(color){
this.color = color;
this.name = "BMW";
this.height = "1400";
this.lang = "4900";
this.weight = "1000";
this.health = "100";
this.run = function (){
this.health --;
}
}
var car = new Car("red");
var car1 = new Car("green");
//car.name = "M";
//car1.name = "m";
参数才能使一个函数发生变化,才能变成自定义的环节!!
function Student(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
this.geade = 2017;
}
var student = new Student("zhangsan",18,"male");
有三个咱们选配的,一个是自定义好的,有选配有固定好的就能生产一个对象,并且每个对象与对象之间是彼此独立的。
构造函数的内部原理:(前提是必须得加new)
在函数体最前面隐式的加上this={}
执行this。xxx=xxx
隐式的返回this
function Student(name,age,sex){
//var this = {
//name :""
//age :
//};
this.name = name;
this.age = age;
this.sex = sex;
this.geade = 2017;
//return this;
}
var student = new Student("zhangsan",18,"male");
function Person(name,height){
this.name = name;
this.height = height;
this.say = function(){
console.log(this.say);
}
//return this;
}
console.log(new Person("xiaowang",180).name);
new Person("xiaowang",180)//new Person要返回一个对象,返回对象我就不拿别人接收了,就在原地用。
一定是有new之后才发生那三部,没new他就是正常函数执行。
function Person(name,height){
var that = {};
that.name = name;
that.height = height;
return that;
}
var person = Person("xiaowang",180);
var person1 = Person("xiaozhang",180);
咱已经知道构造函数的原理了,我显式的var一个that,让that等于一个空对象,
然后that.name = name;that.height = height;return that;可以吗?虽然这样也行,但我们不这样用,因为里面还有更深层次的东西,是模拟不了的。
function Person(name,height){
this.name = name;
this.height = height;
this.say = function(){
console.log(this.say);
}
return {};//这不是捣乱吗
//return this;
}
var person = Person("xiaowang",180);
var person1 = Person("xiaozhang",180);
但是你要是这样捣乱,return 123;var person = new Person("xiaowang",180);
var person1 = new Person("xiaozhang",180);,那就成这样了
你虽然说写的是123,好像正常他返回的还是this吧,系统里面就有这样的机制,但凡你要是用new的话,你可以给我捣乱,但是你返回的必须得是对象值,数组function…..都行,不能返回原始值。