js 深度学习(八)

原型及原型链

prototype是function对象的一个属性 它也是一个对象

prototype是定义构造函数构造出的每个对象的公共祖先

所以被该构造函数构造出来的对象 都可以继承原型上的属性和方法

自己有的属性不会去原型上找

方法写在原型上 属性写在构造函数内部

__proto__是实例化以后的结果 属于实例化对象而不是构造函数

conststuctor指向构造函数本身 构造函数可以修改

bash 复制代码
插件写法:隔绝变量
立即执行函数加分号
;(function(){
var a = 1;
function Test(){
}
window.Test = Test;
})();
var test = new Test();

原型链的顶端是Object.prototype

普通函数不设置返回值 默认返回undefined,构造函数默认返回this

原型的原型是由object构造的

bash 复制代码
Object.create(对象,null)//创建对象 自定义原型 把别的对象作为自己的原型继承
Object.create(Obj.prototype) === new Obj()
Object.create(null) //纯粹空对象 连构造函数和原型都没有
//不是所有的对象都继承object.prototype
object.__proto__ //可以更改但是不可以自己指定 自己指定的无法访问属性
bash 复制代码
undefined null toString() //报错
// 原始值没有属性 数字可以是因为包装类
bash 复制代码
undefined null toString() //报错
// 原始值没有属性 数字可以是因为包装类
原型方法重写 object不能实现 所以重写
Number.prototype.toString.call(1) //"1"
Object.prototype.toString.call(1) // "[object Number]"
bash 复制代码
call // 改变this指向 
Car.call(newCar,'Benz','red')
Car.apply(newCar,['Benz','red'])
相关推荐
不会敲代码15 小时前
手写 Mini React:从 JSX 到虚拟 DOM 再到 render,搞懂 React 底层原理
前端·javascript·react.js
你不是我我6 小时前
【Java 开发日记】HTTP3 性能更好,为什么内网微服务依然多用 HTTP2?HTTP2 内网优势是什么?
java·开发语言·微服务
kyriewen6 小时前
你的代码仓库变成“毛线团”了?Monorepo 用 Turborepo 拆成“乐高积木”
前端·javascript·面试
tjl521314_216 小时前
04C++ 名称空间(Namespace)
开发语言·c++
赏金术士6 小时前
Kotlin 数据流与单双向绑定
android·开发语言·kotlin
逻辑驱动的ken7 小时前
Java高频面试场景题25
java·开发语言·深度学习·面试·职场和发展
openKaka_7 小时前
createRoot 到底创建了什么:FiberRootNode 和 HostRootFiber 的初始化过程
前端·javascript·react.js
AI人工智能+电脑小能手8 小时前
【大白话说Java面试题】【Java基础篇】第32题:Java的异常处理机制是什么
java·开发语言·后端·面试
阿豪只会阿巴9 小时前
【没事学点啥】TurboBlog轻量级个人博客项目——项目介绍
javascript·python·django·html
刀法如飞10 小时前
TypeScript 数组去重的 20 种实现方式,哪一种你还不知道?
前端·javascript·算法