現(xiàn)代的JavaScript中,對象是不可分割的,對對象周圍的主題有很強的理解是編寫更好的JavaScript所必需的。您可以用JavaScript以四種方式創(chuàng)建對象。
一旦知道如何創(chuàng)建對象,您可能希望了解對象屬性描述符。綜上所述,假設您有一個對象——cat:
var cat = {
name: 'foo',
age: 9
}
每個對象屬性包含的信息不僅僅是一個值。例如,可以使用object.getownPropertyDescriptor方法打印其他屬性信息。
1
console.log(Object.getOwnPropertyDescriptor(cat, 'name'));
在控制臺上,可以看到屬性名提供了更多信息:
很明顯,如果將writable設置為true,則可以重寫屬性值等。您可以在此處閱讀有關javascript對象屬性描述符的更多信息。
到目前為止,您已經了解了對象屬性描述符,因此如果需要將屬性設置為只讀,您將把該屬性設置為可寫。
Object.defineProperty(cat, 'name', { writable: false });
下一步,讓我們討論一下更改JavaScript對象默認行為的更多要求。
防止對象具有新屬性
除要求1外,將所有可配置的屬性標記為假
除了要求2之外,還應使所有屬性都可寫為false
從ECMA 6開始,您有實現(xiàn)上述要求的方法。讓我們一個接一個地拿著:
Object.preventExtensions
比如說,你有一個對象——cat:
var cat = {
name: 'foo',
age: 9
}
使用默認行為,您可以向JavaScript對象添加屬性。因此,可以進行以下操作:
cat.color = 'black';
console.log(cat.color); // black
要防止默認行為在對象中動態(tài)添加屬性,需要使用object.preventextensions()。此方法阻止對象添加新屬性。
Object.preventExtensions(cat);
cat.color = 'black';
console.log(cat.color); // undefined
在對象上使用object.preventextensions之后,如果添加新的屬性顏色,javascript將忽略它,并且作為輸出,您將得到未定義的。
如果javascript處于嚴格模式,則如果向不可擴展的對象添加新屬性,則會出現(xiàn)錯誤。
'use strict'
var cat = {
name: 'foo',
age: 9
}
Object.preventExtensions(cat);
cat.color = 'black';
console.log(cat.color); // error thrown
在嚴格模式下,您將收到一個錯誤,消息傳遞非常清楚,即“cannot add property, object is not extensible”
總而言之,您應該使用object.preventextensions方法來防止向對象添加新屬性。
Object.seal
假設你想封一個物體,意思是:
可以使用object.seal()方法密封對象。讓我們再次考慮一個對象——cat:
var cat = {
name: 'foo',
age: 9
}
您不希望將新屬性添加到cat中,并且所有屬性的可配置性都應設置為false。可以使用object.seal()方法執(zhí)行此操作:
Object.seal(cat);
cat.color = 'black';
console.log(cat.color); // undefined
console.log(Object.getOwnPropertyDescriptor(cat, 'name'));
因為您有一個密封的對象作為輸出,所以您將得到未定義和可配置的設置為false。
總而言之,應該使用object.seal()來密封對象。您將無法添加新屬性,并且將配置設置為“false”。
Object.freeze
假設你想凍結一個物體,意思是:
可以使用object.freeze()方法凍結對象。它本質上調用object.seal()方法,并將可寫屬性設置為false。
讓我們考慮一個對象——cat:
var cat = {
name: 'foo',
age: 9
}
不應將新屬性添加到對象中,所有屬性的可配置性應設置為false,屬性的可寫性應設置為false。可以使用object.freeze()方法執(zhí)行此操作:
Object.freeze(cat);
cat.age = 10;
cat.color = 'black';
console.log(cat.age); //9
console.log(cat.color); // undefined
console.log(Object.getOwnPropertyDescriptor(cat, 'name'));
由于您已經凍結了對象,作為輸出,您將得到未定義、9和可配置和可寫設置為false。
總而言之,應該使用object.freeze()凍結對象。一旦凍結對象,就不能添加新屬性或重寫屬性值,而configurable將設置為false。
總結
在使用JavaScript中的對象時,您需要對創(chuàng)建對象的不同方法有很強的理解。非常需要屬性描述符、object.seal、object.preventextensions和object.freeze。希望你現(xiàn)在能更好地理解這些概念。
點擊“了解更多”下載產品最新版
↓↓↓
、定義
<meta> 標簽提供關于 HTML 文檔的元數據。它不會顯示在頁面上,但是對于機器是可讀的。可用于瀏覽器(如何顯示內容或重新加載頁面),搜索引擎(關鍵詞),或其他 web 服務。
2、作用
meta里的數據是供機器解讀的,告訴機器該如何解析這個頁面,還有一個用途是可以添加服務器發(fā)送到瀏覽器的http頭部內容,例如我們?yōu)轫撁嬷刑砑尤缦耺eta標簽:
瀏覽器的頭部就會包括這些:
只有瀏覽器可以接受這些附加的頭部字段,并能以適當的方式使用它們時,這些字段才有意義。
3、meta的必需屬性和可選屬性
meta的必需屬性是content,當然并不是說meta標簽里一定要有content,而是當有http-equiv或name屬性的時候,一定要有content屬性對其進行說明。例如:
必需屬性
<meta name="keywords" content="HTML,ASP,PHP,SQL">
這里面content里的屬性就是對keywords進行的說明,所以呢也可以理解成一個鍵值對吧,就是{keywords:"HTML,ASP,PHP,SQL"}。
可選屬性
在W3school中,對于meta的可選屬性說到了三個,分別是http-equiv、name和scheme。考慮到scheme不是很常用,所以就只說下前兩個屬性吧。
http-equiv
http-equiv屬性是添加http頭部內容,對一些自定義的,或者需要額外添加的http頭部內容,需要發(fā)送到瀏覽器中,我們就可以是使用這個屬性。在上面的meta作用中也有簡單的說明,那么現(xiàn)在再舉個例子。例如我們不想使用js來重定向,用http頭部內容控制,那么就可以這樣控制:
<meta http-equiv="Refresh" content="5;url=http://blog.yangchen123h.cn" />
在頁面中加入這個后,5秒鐘后就會跳轉到指定頁面啦,效果可看W3school的例子
name
第二個可選屬性是name,這個屬性是供瀏覽器進行解析,對于一些瀏覽器兼容性問題,name屬性是最常用的,當然有個前提就是瀏覽器能夠解析你寫進去的name屬性才可以,不然就是沒有意義的。還是舉個例子吧:
<meta name="renderer" content="webkit">
這個meta標簽的意思就是告訴瀏覽器,用webkit內核進行解析,當然前提是瀏覽器有webkit內核才可以,不然就是沒有意義的啦。當然看到這個你可能會有疑問,這個renderer是從哪里冒出來的,我要怎么知道呢?這個就是在對應的瀏覽器的開發(fā)文檔里就會有表明的,例如這個renderer是在360瀏覽器里說明的。360瀏覽器內核控制Meta標簽說明文檔
常用meta標簽大總結
接下來就是常用的meta標簽大總結啦,我會盡可能的做到全
charset
charset是聲明文檔使用的字符編碼,解決亂碼問題主要用的就是它,值得一提的是,這個charset一定要寫第一行,不然就可能會產生亂碼了。
charset有兩種寫法
兩個都是等效的。
百度禁止轉碼
百度會自動對網頁進行轉碼,這個標簽是禁止百度的自動轉碼
<meta http-equiv="Cache-Control" content="no-siteapp" />
SEO 優(yōu)化部分
viewport
viewport主要是影響移動端頁面布局的,例如:
content 參數:
各瀏覽器平臺
Microsoft Internet Explorer
Google Chrome
360瀏覽器
UC手機瀏覽器
UCBrowser_U3_API
QQ手機瀏覽器
Apple iOS
Google Android
App Links
最后——移動端常用的meta
頻影像凍結幀后變成一份報紙的頁面,創(chuàng)意的效果令人印象深刻
壓縮包內含視頻教程,可以學習到這里凍結幀的制作方法
視頻預覽
https://v.qq.com/x/page/l3000iw53lp.html
圖片預覽
【版本要求】建議使用 AE CS6 或更高的AE版本打開
【插件要求】該AE模板不需要任何第三方插件
【模板尺寸】1920*1080
【時間長度】1:20
【文件大小】30.8M
點擊了解更多,免費獲取該模板
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。