前端面试题——javascript中的prototype属性

最近参加面试,发现面试官总会问到:”你了解javascript中的prototype属性吗?“所以整理一下javascript中的prototype属性的用法。

1、prototype的定义

javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。prototype 属性使您有能力向对象添加属性和方法。
那么我们需要了解一下:什么是javascript对象呢?
点击下面链接可以查看javascript对象的讲解以及实例:
什么是javascript对象
每一个构造函数中都有prototype属性,你可以在控制台查看一下它的类型:

<script type="text/javascript">
	function Test(){}
	console.log(Test.prototype);
</script>

控制台输出结果:
前端面试题——javascript中的prototype属性_第1张图片
可以看到,prototype是一个对象,所以你能够给它添加属性。

2.可以利用prototype来给对象添加属性

我们知道,在一个已存在的对象构造器中是不能添加新的属性的,例如,给Person对象添加身高height属性:

<script type="text/javascript">
	function Person(name,sex,age){
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	Person.height = "180cm";
	myPerson1 = new Person("Jack","male",19);
	console.log(myPerson1.name)
	console.log(myPerson1.height)
</script>

控制台运行结果:

我们会发现,已存在的对象构造器中是不能添加新的属性的。
我们可以利用prototype来给对象添加属性,我们添加给prototype的属性将会成为使用这个构造函数创建的对象的通用属性。
例如:

<script type="text/javascript">
	function Person(name,sex,age){
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	//利用prototype来给对象添加属性
	Person.prototype.height = "180cm";
	myPerson1 = new Person("Jack","male",19);
	console.log(myPerson1.name)
	console.log(myPerson1.height)
</script>

控制台运行结果:

3.使用 prototype 属性给对象的构造函数添加新的方法

例如:给Person对象添加新的方法fullname():

<script type="text/javascript">
	function Person(firstname,lastname,sex,age){
		this.firstname = firstname;
		this.lastname = lastname;
		this.sex = sex;
		this.age = age;
	}
	Person.prototype.fullname = function(){
		return this.firstname + " " + this.lastname
	};
	myPerson1 = new Person("Nate","Dan","male",19);
	console.log("我的名字是:"+myPerson1.fullname())
</script>

控制台运行结果:

你可能感兴趣的:(面试,javascript)