对象(2)

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…..都行,不能返回原始值。

猜你喜欢

转载自blog.csdn.net/hdq1745/article/details/81709092
今日推荐