国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ES6類-繼承-Symbol-模版字符串

這篇具有很好參考價(jià)值的文章主要介紹了ES6類-繼承-Symbol-模版字符串。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

?繼承

ES5 如何繼承

ES6繼承

Symbol

用途

可以產(chǎn)生唯一的值,獨(dú)一無(wú)二的值

解決命名沖突

getOwnPropertySymbols()

?作為全局注冊(cè)表 緩存 ?Symbol.for()

?消除魔術(shù)字符串

?模版字符串


在javascript語(yǔ)言中,生成實(shí)例對(duì)象使用構(gòu)造函數(shù);ES6提供了類Class這個(gè)概念,作為對(duì)象的模板。定義一個(gè)類通過(guò)class關(guān)鍵字,ES6的類可以看成是構(gòu)造函數(shù)的另一種寫法。

class Person{
    constructor(name,age,gender){
        // 類構(gòu)造器中屬性和方法是實(shí)例私有屬性和私有方法
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
    // 實(shí)例公共方法 類似于存放在Person類原型對(duì)象中
    sayName(){
        console.log(this.name);
    }
    test = 'hello'; //實(shí)例公共屬性
    friends = [];  //實(shí)例私有屬性
    // 類靜態(tài)屬性和靜態(tài)方法
    static personAttr = '類的靜態(tài)屬性';
    static personMethod = function(){
        console.log('類靜態(tài)方法this指向類本身');
        console.log(this,this.personAttr,this.test,this.friends);
    }
}
let p1 = new Person('可樂(lè)',12,'male');
let p2 = new Person();
console.log(p1.test,p2.test);
console.log(p1.test === p2.test);
p1.friends.push('tom');
console.log(p1.friends,p2.friends);
console.log(p1.friends === p2.friends);
Person.personMethod();

ES6類-繼承-Symbol-模版字符串,HTML+CSS+JS,es6,前端,javascript

?繼承

ES5 如何繼承

實(shí)例使用屬性和方法
? 1.從實(shí)例對(duì)象本身查找屬性或者方法
? 2.如果實(shí)例沒(méi)有,從構(gòu)造函數(shù)的原型對(duì)象中找
? 3.如果還沒(méi)有,從父構(gòu)造函數(shù)的原型對(duì)象中找

/**
 * es5 繼承 
 * 經(jīng)典繼承 原型鏈繼承
 */
// function Animal(name,age,length,weight){
// 	this.name = name;
// 	this.age = age;
// 	this.length = length;
// 	this.weight = weight;
// }
// Animal.prototype = {
// 	constructor:Animal,
// 	sayType(){
// 		console.log(this.type)
// 	}
// }
// function Dog(name,age,length,weight,type){
// 	// 繼承父構(gòu)造函數(shù)屬性  借用構(gòu)造函數(shù)繼承 經(jīng)典繼承
// 	Animal.call(this,name,age,length,weight);
// 	this.type = type;
// }
// // 原型鏈繼承 子類得原型對(duì)象指向父類得實(shí)例 
// Dog.prototype = new Animal();
// Dog.prototype.constructor = Dog;
// let d1 = new Dog('可樂(lè)',12,'40cm','10kg','狗');
// d1.sayType();
// console.log(d1);

更詳細(xì)的ES5繼承見(jiàn)面向?qū)ο笾畡?chuàng)建對(duì)象模式和繼承模式_學(xué)前端的狗頭蘇丹的博客-CSDN博客

ES6繼承

class可以通過(guò)extends關(guān)鍵字實(shí)現(xiàn)繼承,子類可以沒(méi)有構(gòu)造函數(shù),系統(tǒng)會(huì)默認(rèn)分配。子類提供了構(gòu)造函數(shù)則必須要顯式調(diào)用super。super函數(shù)類似于借用構(gòu)造函數(shù)。類似于Animal.call()

1.子類對(duì)象指向父類對(duì)象

2.子類原型對(duì)象繼承父類原型對(duì)象

/**
 * ES6繼承 使用extends關(guān)鍵字實(shí)現(xiàn)繼承
 */
class Animal{
    // 構(gòu)造器屬性 實(shí)例私有屬性
    constructor(name,age,length){
        this.name = name;
        this.age = age;
        this.length = length;
    }
    // 類體方法 實(shí)例公共方法  存放在Animal.prototype中
    sayName(){
        console.log(this.name);
    }
    test = 'hello';
    friends = [];
    // 靜態(tài)屬性和靜態(tài)方法
    static ParentAttr = '父類屬性';
    static ParentMethod = function(a){
        console.log('父類的方法');
        return a instanceof Animal;
    }
}
// 子類繼承父類     不提供constructor的情況
class Dog extends Animal{

}
let d1 = new Dog('可樂(lè)',12,'50cm');
console.log(d1);
d1.sayName();
d1.friends.push('tom')
console.log(d1.test,d1.friends,d1);
console.log(Dog.ParentAttr);
console.log(Dog.ParentMethod(d1));

// 子類繼承自父類
console.log(Dog.__proto__ === Animal);
// 子類原型對(duì)象繼承自父類的原型對(duì)象
console.log(Dog.prototype.__proto__ === Animal.prototype);

// 子類如果提供了構(gòu)造器 必須顯示調(diào)用super
// class Dog2 extends Animal{
//     constructor(name,age,weight,type,color){
//         super(name,age,weight); //相當(dāng)于調(diào)用父類構(gòu)造器  Animal.call()
//         this.type = type;
//         this.color = color;
//     }
//     sayName(){
//         console.log(this.name,'子類實(shí)例公共方法');
//     }
// }
// let d2 = new Dog2('可樂(lè)',12,'50cm','狗','黑色');
// console.log(d2);
// d2.sayName();

ES6類-繼承-Symbol-模版字符串,HTML+CSS+JS,es6,前端,javascript

Symbol

ES6引入的一種新的原始數(shù)據(jù)類型Symbol,表示獨(dú)一無(wú)二的值。Symbol函數(shù)可以接受參數(shù),表示對(duì)于這個(gè)唯一值的描述。屬于基本數(shù)據(jù)類型,Symbol()函數(shù)會(huì)返回symbol類型的值

參數(shù):字符串 表示對(duì)這個(gè)symbol值的描述

用途

可以產(chǎn)生唯一的值,獨(dú)一無(wú)二的值
let sy1 = Symbol();
let sy2 = Symbol();
console.log(sy1,sy2,sy1 === sy2,sy1.toString());

let a = new Number();
let b = new String();
console.log(a,b);

ES6類-繼承-Symbol-模版字符串,HTML+CSS+JS,es6,前端,javascript

解決命名沖突
let sy3 = Symbol('name'); //接收的字符串 對(duì)symbol的描述
let sy4 = Symbol('age');
let obj = {
    name:'zhangsan',
    age:12,
    [sy3]:'terry',
    [sy4]:18,
    [Symbol('email')]:"443119974@qq.com"
}
console.log(obj);
for(let key in obj){
    console.log(key);
}

?ES6類-繼承-Symbol-模版字符串,HTML+CSS+JS,es6,前端,javascript

getOwnPropertySymbols()

?從上圖輸出結(jié)果來(lái)看:我們可以發(fā)現(xiàn)for in循環(huán)無(wú)法遍歷到symbol值作為屬性名對(duì)應(yīng)的屬性,我們想要獲取所有的symbol值對(duì)應(yīng)的屬性,,則需要使用getOwnPropertySymbols()方法

/**
 * 獲取所有的symbol值對(duì)應(yīng)的屬性
 * getOwnPropertySymbols
 */
console.log(Object.getOwnPropertySymbols(obj));
let s = Object.getOwnPropertySymbols(obj);  //[ Symbol(name), Symbol(age), Symbol(email) ]
console.log(obj[s[2]]);

?ES6類-繼承-Symbol-模版字符串,HTML+CSS+JS,es6,前端,javascript

?作為全局注冊(cè)表 緩存 ?Symbol.for()

全局注冊(cè)表
Symbol() 不同的是,用 Symbol.for() 方法創(chuàng)建的的 symbol 會(huì)被放入一個(gè)全局 symbol 注冊(cè)表中。Symbol.for() 并不是每次都會(huì)創(chuàng)建一個(gè)新的 symbol,它會(huì)首先檢查給定的 key 是否已經(jīng)在注冊(cè)表中了。假如是,則會(huì)直接返回上次存儲(chǔ)的那個(gè)。否則,它會(huì)再新建一個(gè)。

/**
 * 3.作為全局注冊(cè)表 緩存 Symbol.for()
 */
// 將symbol放到全局注冊(cè)表中
let sy5 = Symbol.for('hello');
let sy6 = Symbol.for('hello');
console.log(sy5 === sy6);       //true

// 每次都會(huì)創(chuàng)建一個(gè)不同symbol值  雖然描述符一樣 但是Symbol value值不一樣
let sy7 = Symbol('hello');
let sy8 = Symbol('hello');
console.log(sy7 === sy8);       //false

// Symbol.keyFor()可以檢測(cè)symbol值是否在全局注冊(cè)表中注冊(cè)過(guò)。 返回對(duì)于symbol的描述或者undefined
console.log(Symbol.keyFor(sy5));
console.log(Symbol.keyFor(sy6));
console.log(Symbol.keyFor(sy7));

Symbol.keyFor()可以檢測(cè)symbol值是否在全局注冊(cè)表中注冊(cè)過(guò)。 返回對(duì)于symbol的描述或者undefined?

ES6類-繼承-Symbol-模版字符串,HTML+CSS+JS,es6,前端,javascript

?消除魔術(shù)字符串

魔術(shù)字符串指的是,在代碼之中多次出現(xiàn)、與代碼形成強(qiáng)耦合的某一個(gè)具體的字符串或者數(shù)值。

/**
 * 4.消除魔術(shù)字符串
 */
function getArea(shape,options){
    let area = 0;
    switch(shape){
        case Shape.SJX:
            area = .5 * options.height * options.width;
            break;
        case Shape.ZFX:
            area = options.height * options.width;
            break;
        case Shape.CIRCLE:
            area = Math.PI * options.r * options.r;
            break;
        default:
            area = -1;
    }
    return area;
}
const Shape = {
    SJX:Symbol('三角形'),
    ZFX:Symbol('正方形'),
    CIRCLE:Symbol('圓'),
}
let res = getArea(Shape.SJX,{height:100,width:100,r:50})
console.log(res);

Shape.SJX = Symbol('六邊形');
console.log(Shape);

ES6類-繼承-Symbol-模版字符串,HTML+CSS+JS,es6,前端,javascript

?模版字符串

模板字面量是用反引號(hào)(`)分隔的字面量,允許多行字符串、帶嵌入表達(dá)式的字符串插值和一種叫帶標(biāo)簽的模板的特殊結(jié)構(gòu)。

模板字面量有時(shí)被非正式地叫作模板字符串,因?yàn)樗鼈冏畛1挥米髯址逯担ㄍㄟ^(guò)替換占位符來(lái)創(chuàng)建字符串)。然而,帶標(biāo)簽的模板字面量可能不會(huì)產(chǎn)生字符串——它可以與自定義標(biāo)簽函數(shù)一起使用,來(lái)對(duì)模板字面量的不同部分執(zhí)行任何操作。

/**
 * 模版字符串 可以解析變量
 */
let name = 'zhangsan';
let age = 12;
// let str = 'name' + 'age';
let str = `${name}+${age}`
console.log(str);

let id = 1;
let url = `121.199.0.35:8888/findById?id=${id}`;
console.log(url);

ES6類-繼承-Symbol-模版字符串,HTML+CSS+JS,es6,前端,javascript

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-569649.html

到了這里,關(guān)于ES6類-繼承-Symbol-模版字符串的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前瞻|Java 21 新特性 String Templates(字符串模版)

    在日常寫Java的時(shí)候,對(duì)于字符串的操作是非常普遍的,其中最常見(jiàn)的就是對(duì)字符串的組織。也因?yàn)檫@個(gè)操作非常普遍,所以誕生了很多方案,總下來(lái)大概有這么幾種: 使用 + 拼接 使用 StringBuffer 和 SpringBuilder String::format and String::formatted 使用 java.text.MessageFormat 下面,我們一起

    2024年02月10日
    瀏覽(17)
  • ES:字符串排序,字符串按照數(shù)字排序

    ES:字符串排序,字符串按照數(shù)字排序

    對(duì)一個(gè)字符串類型的字段進(jìn)行排序通常不準(zhǔn)確,因?yàn)橐呀?jīng)被分詞成多個(gè)詞條了 字段雖然是字符串,但是其實(shí)值是整數(shù), 排序按照字符串轉(zhuǎn)成整數(shù)排序 解決方式:對(duì)字段索引兩次,一次索引分詞(用于搜索),一次索引不分詞(用于排序) 期望按照字符串排序, 不分詞 期望按照

    2024年02月11日
    瀏覽(36)
  • HTML中的字符串轉(zhuǎn)義

    HTML中的字符串轉(zhuǎn)義

    轉(zhuǎn)義可以防止 xss 攻擊。接下來(lái),我們來(lái)看一下如何轉(zhuǎn)義。 Sanitizer?是瀏覽器自帶的轉(zhuǎn)義方法,在2021年初被提出,兼容性問(wèn)題很大。 列舉幾個(gè)常用的 API:? 這是一個(gè)簡(jiǎn)單的轉(zhuǎn)義,只會(huì)把跟 html 有沖突的標(biāo)簽進(jìn)行轉(zhuǎn)義。 防止用戶輸入惡意篡改,Vue,JSX 默認(rèn)情況下不用處理,插

    2024年02月12日
    瀏覽(91)
  • 前端如何安全的渲染HTML字符串?

    前端如何安全的渲染HTML字符串?

    在現(xiàn)代的Web 應(yīng)用中,動(dòng)態(tài)生成和渲染 HTML 字符串是很常見(jiàn)的需求。然而,不正確地渲染HTML字符串可能會(huì)導(dǎo)致安全漏洞,例如跨站腳本攻擊(XSS)。為了確保應(yīng)用的安全性,我們需要采取一些措施來(lái)在安全的環(huán)境下渲染HTML字符串。本文將介紹一些安全渲染 HTML 字符串的最佳實(shí)

    2024年02月12日
    瀏覽(35)
  • python html(文件/url/html字符串)轉(zhuǎn)pdf

    python html(文件/url/html字符串)轉(zhuǎn)pdf

    安裝庫(kù) 第二步 下載程序 wkhtmltopdf https://wkhtmltopdf.org/downloads.html 下載7z壓縮包 解壓即可, 無(wú)需安裝 解壓后結(jié)構(gòu)應(yīng)該是這樣, 我喜歡放在項(xiàng)目里, 相對(duì)路徑引用(也可以使用絕對(duì)路徑, 放其他地方) 最好每個(gè)都像 string_to_pdf 函數(shù)一樣, 捕獲一下錯(cuò)誤, 可以使程序更健壯, 避免轉(zhuǎn)換失敗

    2024年02月08日
    瀏覽(34)
  • 【ES6】—【新特性】—Symbol詳情

    【ES6】—【新特性】—Symbol詳情

    定義:獨(dú)一無(wú)二的字符串 PS: Symbol 聲明的值是獨(dú)一無(wú)二的 PS: 無(wú)論Symbol.for()在哪里聲明,都屬于全局環(huán)境聲明 當(dāng)一個(gè)對(duì)象的key值有重復(fù)時(shí),后面的值會(huì)覆蓋前面的值 PS: 使用Symbol的獨(dú)一無(wú)二的特性來(lái)解決

    2024年02月10日
    瀏覽(27)
  • 【ES6】JavaScript中的Symbol

    【ES6】JavaScript中的Symbol

    Symbol是JavaScript中的一種特殊的、不可變的、不可枚舉的數(shù)據(jù)類型。它通常用于表示一個(gè)唯一的標(biāo)識(shí)符,可以作為對(duì)象的屬性鍵,確保對(duì)象的屬性鍵的唯一性和不可變性。 Symbol.for()是Symbol的一個(gè)方法,它用于創(chuàng)建一個(gè)已經(jīng)注冊(cè)的Symbol對(duì)象。當(dāng)使用Symbol.for()創(chuàng)建Symbol對(duì)象時(shí),會(huì)

    2024年02月10日
    瀏覽(28)
  • C# 將HTML網(wǎng)頁(yè)、HTML字符串轉(zhuǎn)換為PDF文件

    將 HTML 轉(zhuǎn)換為 PDF 可實(shí)現(xiàn)格式保留、可靠打印、文檔歸檔等多種用途,滿足不同領(lǐng)域和情境下的需求。本文將通過(guò)以下兩個(gè)示例,演示如何使用第三方庫(kù) Spire.PDF for .NET 和 QT 插件在 C# 中將 Html 網(wǎng)頁(yè)( URL )或 HTML 字符串轉(zhuǎn)為 PDF 文件。 HTML轉(zhuǎn)PDF所需工具: 1. Spire.PDF for .NET 首先

    2024年01月25日
    瀏覽(23)
  • 手撕前端面試題【javascript~ 總成績(jī)排名、子字符串頻次統(tǒng)計(jì)、繼承、判斷斐波那契數(shù)組等】

    手撕前端面試題【javascript~ 總成績(jī)排名、子字符串頻次統(tǒng)計(jì)、繼承、判斷斐波那契數(shù)組等】

    html頁(yè)面的骨架,相當(dāng)于人的骨頭,只有骨頭是不是看著有點(diǎn)瘆人,只有HTML也是如此。 css,相當(dāng)于把骨架修飾起來(lái),相當(dāng)于人的皮肉。 js(javascripts),動(dòng)起來(lái),相當(dāng)于人的血液,大腦等一切能使人動(dòng)起來(lái)的器官或者其他的。 在刷題之前先介紹一下牛客。Leetcode有的刷題??投加?,

    2024年01月15日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包