ES5-10 原型、原型链、闭包立即执行函数、插件开发

重学第六章

1. 原型

  • 实例内属性和原型上属性重名时(屏蔽)
function Test(name) {this.name = name
}
Test.prototype.name = 'hhh'
let tObj = new Test('yyy')
console.log(tObj.name) // yyy
tObj.name = null
console.log(tObj.name) // null
delete tObj.name
console.log(tObj.name) // hhh
  • 实例的__proto__属性指向的对象有constructor属性,指向构造函数
function Test() {}
let tObj = new Test()
console.log('实例', tObj)
console.log('constructor', tObj.constructor)
console.log(tObj.constructor === tObj.__proto__.constructor)

在这里插入图片描述

  • 实例(实例化的时候)的__proto__ 和构造函数的prototype全等,
function Test() {}
Test.prototype.name = 'name'
let tObj = new Test()
console.log('实例', tObj)
console.log('实例__proto__', tObj.__proto__)
console.log('prototype', Test.prototype)
console.log(tObj.__proto__ == Test.prototype)

在这里插入图片描述
在这里插入图片描述

  • 切断了prototype 和 __proto__的联系,并且丢失了constructor

  • 手动在字面量里添加constructor会让这个属性的[[Enumerabl]]变为true

  • 可用Object.defineProperty(Car.prototype,constructor,{
    enumerable:false,value:Car})
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    不加debugger
    在这里插入图片描述

  • 在实例化之后再改prototype (跟实例化前后也有点关系)
    在这里插入图片描述

function Test() { }
Test.prototype.name = 'hhh'
Test.prototype = {name: '111'
}
let tObj = new Test()
Test.prototype.name = '666'
console.log(tObj.name) // 666
console.log(tObj.__proto__ === Test.prototype) // true
console.log(Test.prototype.isPrototypeOf(tObj)) // true  
function Test() { }
Test.prototype.name = 'hhh'
Test.prototype = {name: '111'
}
let tObj = new Test()
Test.prototype = {name: '666'
}
console.log(tObj.name) // 111
console.log(tObj.__proto__ === Test.prototype) // false
console.log(Test.prototype.isPrototypeOf(tObj)) // false  

2. 插件开发

  • 放在IIFE里,能隔离作用域
    在这里插入图片描述
; (function () {function Compute(a, b) {this.a = athis.b = b}Compute.prototype.plus = function () {return this.a + this.b}Compute.prototype.minus = function () {return this.a - this.b}Compute.prototype.multi = function () {return this.a * this.b}Compute.prototype.div = function () {return this.a / this.b}window.Compute = Compute
})()
let computeObj = new Compute(8, 2)
console.log('加', computeObj.plus()) // 10
console.log('减', computeObj.minus()) // 6
console.log('乘', computeObj.multi()) // 16
console.log('除', computeObj.div()) // 4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript --- 使用run函数,让100条ajax依次执行

使用如下: function *foo(len,urlArray) {let r [];for(let i 0; i< len; i){r[i] yield request(urlArray[i]);} } // len:是长度,urlArray,是请求的url数组..下面附上run函数的代码,以及证明以上是成立的 // Benjamin Gruenbaum(benjamingr on Github) function run(g…

[转]IIS 允许/禁止 目录浏览

<?xml version"1.0" encoding"utf-8"?> <configuration><system.webServer><directoryBrowse enabled"true" /></system.webServer> </configuration> enabled true -> 允许目录浏览&#xff0c;子目…

C++编程基础一 06-布尔类型

1 // 06-布尔类型.cpp: 定义控制台应用程序的入口点。2 //3 4 #include "stdafx.h"5 #include <iostream>6 using namespace std;7 8 int main()9 { 10 bool a true; //真 存在的 非零 1 11 bool b false;//假 不存在 零 0 12 cout << …

性能优化杂记

webpack 开发、生产环境配置不同的webpack配置文件 生产环境删除devServer&#xff08;不需要启webpack devServer&#xff09; 告诉webpack&#xff0c;生产、开发分别要对应哪个配置文件 开发环境下也能看到打包的结果 npm run dev:build npm run dev 只会把打包生产…

算法 --- 冒泡排序、选择排序、插入排序的js实现

冒泡排序: function bubbleSort(arr){let i arr.length;while(i >0){for(let j 0; j< i; j) {let pos 0;if(arr[j] > arr[j1]) {pos j;let temp arr[j];arr[j] arr[j1];arr[j1] temp;}}i pos;}return arr; } var arr [3,44,38,5,47,15,36,26,27,2,46,4,19,5…

appium--每次启动会重新安装的问题(没试过)

有人说加这个 最后 大神说 在appium哪里就可以设置了 对&#xff0c;第一个不勾选就不会安装了【经理】[Java]大连●Messi_Z(726862194) 15:54:10把这些东西全去掉就好了转载于:https://www.cnblogs.com/kaibindirver/p/8205031.html

爬虫从入门到放弃 - 纯新手学习-爬虫基本原理

1.什么是爬虫&#xff1f; 请求网站并提取数据的自动化程序 请求&#xff1a;客户端向服务端发送请求获得网页资源&#xff0c;是一段html代码&#xff0c;包含html标签和一段信息。 提取&#xff1a;提取出想要的信息&#xff0c;然后将结构化的数据存储到文本 自动化&#xf…

ES5-11原型与原型链深入、对象继承

原型 谁调用&#xff0c;this就指向谁&#xff0c;当实例对象有该属性时&#xff0c;不会去原型上查找 创建对象的两种方法&#xff1a;字面量、new Object&#xff08;&#xff09;一般不用后面的二者创建出来的对象没有差异 Object.create() var 实例 Object.create(对象…

算法 --- 希尔排序、归并排序、快速排序的js实现

希尔排序: function shellSort(arr) {let len arr.length;let temp, gap 1;while(gap < len/3) {gap gap*3 1}while(gap >1) {for(let i gap;i< len; i) {temp arr[i];for( var j i-gap; j> 0 && arr[j] > temp; j - gap) {arr[j gap] arr[j];}…

苹果和虫子问题C++

如果需要转载&#xff0c;请注明出处&#xff1a;http://www.cnblogs.com/wongyi/p/8205305.html 最近在给小朋友补奥数课&#xff0c;顺便看了几道题目&#xff0c;觉得写出来会比较集中&#xff0c;整理一下哈哈哈。 问题如下&#xff1a; 苹果和虫子&#xff1a; 你买了一箱…

SQL SERVER 打开脚本报“未能完成操作,存储空间不足”

使用用SQLCMD命令行。 1、快捷键&#xff1a;winR 2、输入cmd​&#xff0c;确定 3、输入命令&#xff1a;sqlcmd -S <数据库服务器名称> -i C:\<脚本文件路径>.sql 例&#xff1a;sqlcmd -S lgsp_PC -i D:\test.sql P.S.1:最好在你的脚本中使用:use 数据库名(你要…

ES5-12 【utils】继承深入、call、apply、圣杯模式、模块化

继承深入 这两种方式继承不够合理&#xff08;为什么&#xff09; 将实例作为子类的原型 在子类的构造函数内部借用父类的构造函数 将父类的原型作为子类的原型&#xff08;会修改父类的原型&#xff09; css圣杯布局&#xff08;左右宽度固定、中间自适应&#xff09…

vue实现星级评价效果

希望对你们有用&#xff0c;已经自己试过可以的才发布出来的 效果如下&#xff1a; html&#xff1a; <template> <div class"evaStar"> <ul class"star"> <li v-for"(itemClass,index) in itemClasses" :class"itemC…

算法 --- 二叉树查找树的先序(中序、后序)遍历的js实现

结点: function Node(data, left, right) {this.data data;this.left left;this.right right;this.show show; }显示树的数据: function show(){return this.data; }二叉查找树: // Binary Search Tree function BST(){this.root null;this.insert insert; }添加结点到…

第三周学习

一直在练车&#xff0c;没有学习转载于:https://www.cnblogs.com/wj1998/p/9668534.html

IDEA的十大快捷键

Intellij IDEA中有很多快捷键让人爱不释手&#xff0c;stackoverflow上也有一些有趣的讨论。每个人都有自己的最爱&#xff0c;想排出个理想的榜单还真是困难。以前也整理过Intellij的快捷键&#xff0c;这次就按照我日常开发时的使用频率&#xff0c;简单分类列一下我最喜欢的…

ES5-13 对象属性遍历、this、callee、caller

链式调用 在每个函数内部return this 访问对象属性 点语法[]中括号内是字符串或是变量 数组是特殊的对象 对象属性遍历 for in(遍历对象或数组) - 不必再用Object.keys那么麻烦了 for(var key in obj){console.log(obj[key])// obj.key返回undefined// 因为js引擎会转换为…

算法 --- 顺序查找、二分查找的js实现

顺序查找: function seqSearch(arr, data) {for(let i 0; i< arr.length;i) {if(data arr[i]) {return i;}}return -1 } var arr[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]; console.log(seqSearch(arr, 15))二分查找: function binSearch(arr, data) {let low 0;let…

字符串连接(贪心)

输入n个字符串s[i]&#xff0c;你要把他们按某个顺序连接起来&#xff0c;使得字典序最小。 (1 < n < 100) (每个字符串长度 < 100) (字符串只包含小写字母) Input 第一行一个整数n。 接下来每行一个字符串s[i]。 Output 一行一个字符串表示把输入的n个字符串按某个顺…

hibernate课程 初探单表映射3-1 hibernate单表操作简介

本章简介&#xff1a; 1    单一主键 2    基本类型 3    对象类型 4    组件属性 5    单表操作CRUD实例转载于:https://www.cnblogs.com/1446358788-qq/p/8232078.html