## **原型:**
我定义了一个函数,里面的prototype就是原型对象,这是本来就有的,**定义了一些公用的属性和方法**。
**重点:**
1、每一个函数对象都有一个prototype属性,但是普通对象是没有的;
prototype下面又有个construetor,指向这个函数。
2、每个对象都有一个名为\_proto\_的内部属性,指向它所对应的构造函数的原型对象,原型链基于\_proto\_;
**原型的主要作用就是实现继承与扩展对象。**
## **原型链:**
书上解释:**每个函数都有一个prototype属性,称为原型,而原型的值也是一个对象,因此它也有自己的原型,这样就串联起了一条原型链。原型链的链头是object,他的prototype比较特殊,值为null。**
每个函数都有一个prototype属性,它是一个引用变量,默认指向一个空object对象。当调用一个对象的函数或者属性的时候,如果在当前对象里面找不到,那么就到原型对象里面逐级寻找。
*****
在javascript中,**所有的对象都拥有一个__proto__属性**指向该对象的原型(prototype)。Person是一个构造函数,它的本质就是一个函数。在javascript中函数是一等对象。
**原型链是原型对象创建过程的历史记录。**
每个对象都会在内部生成一个proto 属性,当我们访问一个对象属性时,如果这个对象不存在就会去proto 指向的对象里面找,一层一层找下去,当向上找 找到Object的原型的时候,这条原型链就算到头了。(proto最终指向obj)
*****
```
var Person = function(name){
this.name = name;
}
Person.prototype.sayHi = function(){
console.log("Hello! I am " + this.name + ".");
}
var joe = new Person("joe");
var john = new Person("john");
joe.sayHi(); //Hello! I am joe.
john.sayHi(); //Hello! I am john.
```
> 从上面的代码可以看出来,**原型(Person)定义了一些公用的属性和方法;利用原型(Person)创建出来的新对象实例(joe和john对象)会共享原型(Person)的所有属性和方法。**
[详解](https://www.cnblogs.com/wilber2013/p/4924309.html)
[详解](https://www.cnblogs.com/jofun/p/8746511.html)
- HTML,CSS
- 如何书写高效的css样式
- box-shadow
- 表格合并行列
- 自适应单位
- 隐藏元素
- 浏览器缓存
- 浏览器内核
- css和js的合理走位
- 2021样式问题汇总
- 模拟面试
- 移动端适配问题
- flexible(rem)
- vw+rem
- 判断一个属性是对象的私有属性
- px rpx em rem vw
- 清除浮动
- 栅格系统
- get&&post
- 雪碧图
- new操作符
- call apply bind区别
- 前端模块化
- 回调函数
- 回调地狱(封装版)
- 回调地狱(promise)
- 回调地狱(generator)
- 回调地狱(async)
- es6新特性
- let
- 箭头函数
- 展开 解构 默认赋值
- vue生命周期
- axios封装
- axios跨域拿数据
- ajax封装
- JavaScript
- 数组
- 排序
- 取偶数
- 反转排序
- 取最大值
- 数组去重
- 复杂版
- 数组的克隆(深拷贝)的方法
- 求质数
- 原型和原型链
- 创建对象
- 什么是路由
- SASS
- jQuery中的append和prepend区别?
- css动画及js动画的区别
- 隐式类型转换
- 原型
- 事件传播
- 函数
- 增加属性
- 构造函数
- 一元操作符
- 作用域
- 短语
- Vue
- - nextTick
- 自我介绍
- 哦豁(;д;)
- for in效果
- 事件
- promise特点
- 如何实现一个ajax请求
- 媒体查询
- substr和substring
- MVC、MVVM
- 面向对象
- 取数据、渲染数据
- ajax
- vue
- React
- es6-class
- 几种类型的DOM节点
- js同源策略
- 闭包
- 2021
- 数据类型
- 闭包2
- 防抖节流
- 原型与原型链
- call与apply与bind
- 深浅拷贝
- New关键字
