JavaScript prototype(原型)

简介: JavaScript prototype(原型)

文章目录


prototype (原型)

prototype 定义

在说prototype先说一下构造函数,什么是构造函数呢?

构造函数:就是一个普通函数(类型),用来创建对象的;

实例:通过构造函数创建的对象就是实例

构造函数执行流程:

1.立刻创建一个新的对象;

2.将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象;

3.逐步执行函数中的代码;

4.将新建的对象作为返回值返回;

this.:

1.当以函数的形式调用时,this是window;

2.当以方法的形式调用时,谁调用的方法this就是谁;

3.当以构造函数的形式调用时,this就是新建的那个对象

上面是介绍了构造函数和this在不同场景下,代表什么意思,下面来说下prototype

我们所创建的每一个函数,解析器都会向函数中添加一个属性prototype

这个属性对应的一个对象,这个对象就是我们所说的原型对象

当函数以构造函数的形式进行调用时,我们可以通过__proto__来访问属性;

原型对象相当于一个公共的区域,所有同一个类(构造函数)的实例都可以访问到这个原型对象,我们可以将对象中共有的内容,统一设置到原型对象中

当访问对象的一个属性或方法时,它会先在对象自身寻找,如果有直接使用,如果没有则会去原型对象中寻找,如果找到直接使用

prototype 语法

向原型中添加属性

构造函数名称.prototype.属性名 = 属性值;
向原型中添加属性a
Person.prototype.a = 123;

//向原型对象中添加方法

构造函数名称.prototype.方法名= function(){
  alert("大家好");
}
Person.prototype.sayName = function(){
  alert("大家好");
 }

prototype 使用案例

<script type="text/javascript">
  //创建构造函数
  function Person(name,age,gender){
    this.name = name;
     this.age = age;
     this.gender = gender;
   }
   //向原型中添加属性
   Person.prototype.a = 123;
   //向原型对象中添加sayName方法
   Person.prototype.sayName = function(){
     alert("大家好"+this.age);
   }
   //创建对象向构造函数中传递参数,返回对象进行接收
   var per = new Person("测试",28,"男");
   //调用原型对象里的a属性
  console.log(per2.a);
  //调用原型对象里的sayName方法
  per2.sayName();
  //hasOwnProperty 查找对象中是否存在该属性
  //console.log(per2.hasOwnProperty("a"));
</script>

输出结果

4edc953e2c684bbe819ffa954c899c08.png

a的属性值123,在控制台输出

4edc953e2c684bbe819ffa954c899c08.png

prototype 应用场景

原型对象应用场景:

创建构造函数时,可以将这些对象共有的属性和方法,统一添加到构造函数的原型对象中;

不需要分别为每一个对象添加,也不会影响到全局作用域,就可以使每个对象都具有这些属性和方法;

目录
相关文章
|
3月前
|
JavaScript 前端开发
如何在JavaScript中实现基于原型的继承机制
【8月更文挑战第14天】如何在JavaScript中实现基于原型的继承机制
29 0
|
2月前
|
JSON JavaScript 前端开发
js原型继承|26
js原型继承|26
|
1月前
|
JavaScript 前端开发
JavaScript - 测试 Prototype
JavaScript - 测试 Prototype
9 0
|
2月前
|
JavaScript 前端开发
JavaScript prototype(原型对象)
JavaScript prototype(原型对象)
30 0
|
2月前
|
JavaScript 前端开发
JavaScript基础知识-原型(prototype)
关于JavaScript基础知识中原型(prototype)概念的介绍。
37 1
|
3月前
|
JavaScript 前端开发
JavaScript中什么是原型?有什么用?
JavaScript中什么是原型?有什么用?
20 1
|
3月前
|
JavaScript 前端开发 Java
什么是JavaScript原型对象
【8月更文挑战第2天】什么是JavaScript原型对象
60 9
|
3月前
|
设计模式 JavaScript 前端开发
js对原型和继承的理解
了解JavaScript中原型和继承的概念对于编写优雅高效的代码、理解库和框架的内部机制以及执行高级设计模式都有着重要的意义。
44 0
|
3月前
|
JavaScript 前端开发
详细讲解!JavaScript原型 !
详细讲解!JavaScript原型 !
|
4月前
|
JavaScript C++
js【详解】原型 vs 原型链
js【详解】原型 vs 原型链
41 0