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.pswp.cn/news/251186.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251186.shtml
英文地址,請注明出處:http://en.pswp.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