一直很想了解js三座大山,面试的时候经常被问的问题,也是最基础的问题,很多写法的写过也知道,但是一直不知道这样的写法是js三座大山里的,今天通过各个地方查询,但都不是很全,现在分享给你们
**

JS三座大山再学习(一、原型和原型链)

**
原型模式
JS实现继承的方式是通过原型和原型链实现的,JS中没有类(此处指ES5,ES6中加上了class语法糖)

每个函数都有prototype(原型)属性,这个属性是一个指针,指向一个对象,这个对象的用途是包含特定类型的所有实例共享的属性和方法,即这个原型对象是用来给实例共享属性和方法的。 而每个实例内部都有一个指向原型对象的指针(proto)。

5个原型规则
1.所有引用类型(数组、对象、函数),都具有对象特性,及可自由扩展属性

举个栗子
var obj = {name:'抠脚'
}
console.log(obj)     // { name: '波妞' }
obj.like = '宗介'
console.log(obj)      // { name: '波妞', like: '宗介' }

2.所有的引用类型都有一个__proto__属性,属性值是一个普通对象

3.所有的函数都有一个prototype属性,属性值是一个普通对象
4.所有的引用类型的__proto__指向它构造函数的prototype属性值
5.当试图获取一个对象的某个属性时,如果这个对象本身没有这个属性,那么他会去它的__proto__(即它构造函数的prototype)去找

原型链

理解:每一个引用类型都有__proto__,每一个函数都有prototype,引用类型的__proto__与它构造函数的prototype指向同一个对象;调用引用类型时,如果其本身并没有调用的方法或属性,就会去__proto__(也就是它构造函数的prototype)去找,没有的话会继续找prototype的__proto__,到顶级Object的原型指向null为止

function Foo (name, age) {this.name = name
}Foo.prototype.print = function () {console.log(this.name)
}var f = new Foo('波妞')
f.print()   //    波妞

//举个栗子
function Elem(id) {this.elem = document.getElementById(id)
}Elem.prototype.html = function (val) {var elem = this.elem if (val) {elem.innerHTML = valreturn this  // 链式编程}else{return elem.innerHTML}
}Elem.prototype.on = function (type, fn) {var elem = this.elemelem.addEventListener(type, fn)
}var div1 = new Elem('div1')
console.log(div1. html())

如有错误,请斧正
以上

js三座大山----(第一座山)相关推荐

  1. js三座大山----(第二座山)

    JS三座大山再学习(二.作用域和闭包) 作用域 JS中有两种作用域:全局作用域|局部作用域 栗子1 console.log(name); //undefined var name = '波妞'; va ...

  2. 向面前的第一座山进军!!!

    人活着要同事经历这两种境界,一份是现实的生活,一份是不及的灵魂.常常地,面对着纷纭杂沓的 世界,我们就这样或那样地迷惑了:不再艰辛山那边由迷人的风景.然而在闪的这一边滞步是,我们却没 有更好的理由让自 ...

  3. js三座大山----(第三座山)

    JS三座大山再学习(三.异步和单线程) 前言 写这一篇的时候,BiKaBi查阅了很多资料和文章,但是相当多的文章写的都很简单,甚至互相之间有矛盾,这让我很困扰:同时也让我坚定了要写出一篇好的关于JS异 ...

  4. 前端面试送命题(一)-JS三座大山

    前言 本篇文章比较适合3年以上的前端工作者,JS三座大山分别指:原型与原型链,作用域及闭包,异步和单线程. 原型与原型链 说到原型,就不得不提一下构造函数,首先我们看下面一个简单的例子: functi ...

  5. 前端面试送命题-JS三座大山

    前言 本篇文章比较适合3年以上的前端工作者,JS三座大山分别指:原型与原型链,作用域及闭包,异步和单线程. 原型与原型链 说到原型,就不得不提一下构造函数,首先我们看下面一个简单的例子: functi ...

  6. 有一座山就像一个笔架子

    我胆子小的天天 今天的我胆子小的天天,,我的天天脚像绑上了重重的沙袋,来了,它舌头一伸,有一座山就像一个笔架子,我发现平日里疾走如飞的汽车,坚持不了了,飞蛾就不见了,好浓的雾啊. 脸色苍白,第三个来回 ...

  7. “挖空三座山、装了几万台服务器”的绿色数据中心

    富士康在贵安新区的数据中心造在了山洞里."他们挖空了三座山,装了几万台服务器!" 数据中心主体竣工后,经实际测试年pue值小于1.1,居于世界先进水平. 当时,富士康规划园区中有一 ...

  8. 小时候父亲是座山,我长大后山却垮了

    " 小时候,父亲是座山,是权威.当我们长大后,父亲老了后,他们的角色与形象,以及彼此的关系都会发生重大变化,父亲从保护者变成被保护者.这种感觉,总让人五味杂陈." 01 - &qu ...

  9. 90天掌握高级JS(第一个阶段日志)

    90天掌握高级JS(第一阶段日志) 今天是7月9日,很久没有写博客了,目前还没有养成用博客记录学习的习惯. 我的学习方式是用纸做笔记,这个方式缺点还是很多的,知识不容易规整消化不说,还违背了无纸化办公 ...

最新文章

  1. 【ASP.NET 进阶】验证码的实现
  2. springMVC 之 annotation
  3. 在终端执行 Python 代码的 6 种方法,原来还能这样!
  4. Java多线程的几种写法
  5. 文件的创建与读取 文件的数据添加
  6. 【registry】registry 0.9 源码 在 windows下运行
  7. 云时代下,移动云揭秘数据库“新解”
  8. 为什么文本文件以换行符结尾?
  9. SQL Server编写存储过程小工具(三)
  10. jQuery 使用收集
  11. LR11安装报错:此计算机上缺少vc2005_sp1_with_atl_fix_redist,请安装所有缺少的必要组件,然后重新运行此安装。
  12. LoRaWAN网络协议与LoRa私有协议相比有哪些优势
  13. 计算机用户太多怎样删除,删除电脑中多余的用户的4个小技巧
  14. 重心法选址迭代matlab,配送中心重心法选址的研究
  15. 形容等待时间长的句子_形容等待了很久的句子
  16. 计算机网络中网关、路由器、网桥、交换机概念详解
  17. c51语言转换ASCII码,数据转换:C51数字转字符最快速的方法 ASCII转换
  18. 华为路ws5200设置虚拟服务器,华为路由器WS5200如何设置上网 最详细的华为路由器WS5200上网设置方法教程...
  19. 一文掌握项目如何进行分类,项目工时如何计算【实例】
  20. 信用评分建模中样本容量不足怎么办

热门文章

  1. 计算机硬件综合实验六:CPU组成与机器指令执行实验
  2. [人工智能-深度学习-46]:FineTuning(微调)、Transfer Trainning(迁移学习)的理论基础与深度解析
  3. 互联网人群画像和你所不知道的真相
  4. JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)
  5. opencv显示图片只显示部分(或认为图片太大)
  6. 2022-3-26JavaSE试卷-答案
  7. 实现折叠的uitableviewcell效果
  8. iPhone7产业链不为人知的辛酸
  9. python中如何绘制等边三角形
  10. 再生龙linux多挂载点备份,利用Clonezilla(再生龙)对Linux系统备份与恢复