ES5-8 閉包高級、對象、構造函數、實例化

1. 對象

  • 對象內定義的函數一般稱之為方法,在外部的函數聲明稱為函數
  • 對象刪除屬性使用delete 關鍵字
var obj = {a: 1,b: 'string'
}
console.log('obj', obj) // {a: 1, b: "string"}
delete obj.b
console.log('obj', obj) // {a: 1}
  • 在對象里,this指代這個對象本身
  • 創建對象:使用對象字面量或者new Object()
  • 自定義構造函數應用于:模塊化、插件化、組件化
  • 只有new了構造函數以后,this才存在,指向teacher對象,在實例化以前,GO里是沒有this的
    在這里插入圖片描述
  • 通過構造函數實例化出來的多個對象,他們之間是互不相同的
  • 練習1:
function myFun() {var sum = 0var multi = arguments.length === 0 ? 0 : 1for (var i = 0; i < arguments.length; i++) {sum += arguments[i]multi *= arguments[i]}console.log('累加/乘積', sum, multi)
}
myFun(1, 2, 3) // 累加/乘積 6 6
myFun(2, 0, 3) // 累加/乘積 5 0
function MyFun() {var arg = argumentsvar resthis.sumFn = function () {res = 0loop('add', res)}this.multiFn = function () {res = arg.length === 0 ? 0 : 1loop('multi', res)}function loop(method, res) {for (var i = 0; i < arg.length; i++) {if (method === 'add') {res += arg[i]// debugger} else if (method === 'multi') {res *= arg[i]}}console.log(method == 'add' ? '累加' : '累乘', res)}
}
let funObj = new MyFun(1, 2, 3)
funObj.sumFn() // 累加/乘積 6 6
funObj.multiFn() // 累加/乘積 6 6
let funObj2 = new MyFun(2, 0, 3)
funObj2.sumFn() // 累加/乘積 5 0
funObj2.multiFn() // 累加/乘積 5 0
  • 練習2:
var carOpts = {expensive: {brand: '賓利',price: 500},cheap: {brand: '吉利',price: 10}
}
function Car(carOpt) {this.brand = carOpt.brandthis.price = carOpt.price
}
function Customer(option) {this.name = option.namethis.age = option.agethis.salary = option.salarythis.type = option.typethis.buy = function () {console.log(option.name + '買的車', new Car(carOpts[option.type]))}
}
var customerObj = new Customer({ name: '完顏洪烈', age: 30, salary: 1000, type: 'expensive' })
console.log('客戶:', customerObj)
customerObj.buy()
var customerObj2 = new Customer({ name: '楊康', age: 18, salary: 10, type: 'cheap' })
console.log('客戶:', customerObj2)
customerObj2.buy()

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251194.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

es6 --- 使用生成器交替執行

考慮以下場景: var a 1; var b 2;function foo(){a;b b * a;a b 3; }function bar(){b--;a 8 b;b a * 2; }foo(); bar(); console.log(a, b); // 11 22bar(); foo(); console.log(a, b); // 183 180對于上面的兩個函數foo和bar,它們中的任何一個,一旦開始了就會…

oracle-group by -having

1、GROUP BY 語句用于結合合計函數&#xff0c;根據一個或多個列對結果集進行分組。(也就是說group by 和聚合函數結合起來使用&#xff0c;要查詢的結果來沒有聚合函數則報錯&#xff1a;不是group by 表達式) a、where 不能放在group by 后面使用 b、having 要和group by 連在…

【轉載】匯編速查手冊

一、數據傳輸指令 ─────────────────────────────────────── 它們在存貯器和寄存器、寄存器和輸入輸出端口之間傳送數據. 1. 通用數據傳送指令. MOV 傳送字或字節. MOVSX 先符號擴展,再傳送. MOVZX 先零擴展,再傳送. PUSH 把字壓…

ES5-9 【utils】構造函數及實例化原理、包裝類

1. 構造函數 調用構造函數實際會經歷4步 1 創建一個新對象 2 將構造函數的作用域賦值給對象&#xff08;因此this就指向了這個對象&#xff09; 3 執行構造函數中的代碼&#xff08;為這個新對象添加屬性&#xff09; 4 返回新對象 在構造函數內部&#xff0c;this指向構造函數…

es6 --- 異步迭代生成器 Promise

看一個經典ajax回調的例子: function foo(x, y, cb) {ajax("http://some.url.1/?x" x "&y" y,cb); }foo(11, 31, function(err, text) {if(err) {console.error(err);}else {console.log(text);} });// 異步請求some.url.1參數為x 11, y31的數據.…

Mysql5.7.20使用group by查詢(select *)時出現錯誤--修改sql mode

使用select * from 表 group by 字段 時報錯錯誤信息說明&#xff1a; 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column haha_db.staff.id which is not    functionally dependent on columns in GROUP BY clause; this…

【心情隨筆】03

一、 越是學習越是感到自己的無知。以往總有不求甚解的做法&#xff0c;稍微看了一下就囫圇吞棗算懂了&#xff0c;其實這是逃避&#xff0c;不僅面試問的時候答不上來&#xff0c;而且內部可以用來擴展的思想也沒有領悟到。連該問題都說不清楚更不要說舉一反三了。近來&#x…

ES5-10 原型、原型鏈、閉包立即執行函數、插件開發

重學第六章 1. 原型 實例內屬性和原型上屬性重名時&#xff08;屏蔽&#xff09; 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.…

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…