-
嚴格模式
查看全部 -
類型檢驗小結(jié)
查看全部 -
ssdasdasdasd
sdasdasds?
查看全部 -
1:31
查看全部 -
哈哈哈
查看全部 -
哈哈哈哈哈
查看全部 -
改哈哈哈哈哈哈哈哈哈哈哈哈
查看全部 -
null 空對象也是對象,就是它是空。
查看全部 -
原始類型:string,number,null,布爾,undefined
對象類型:函數(shù),對象,數(shù)組,日期都屬于對象類型查看全部 -
完成學習第二階段:全盤回顧,腳踏實地跟隨學習,做筆記實操。
查看全部 -
完成學習第一階段:快速獲取認知。
查看全部 -
.
查看全部 -
基礎
查看全部 -
不加感嘆號會認為是函數(shù)聲明,會前置,只剩下括號,會報語法錯誤
查看全部 -
unshift可以在頭部添加元素
查看全部 -
var a = b = 1
隱式創(chuàng)建了全局變量b
查看全部 -
1. 原始表達式 //常量、直接量、關鍵字、變量
? 常量,直接量 ?3,14 ?"test"
? 關鍵字 null ?this ?true
? 變量 i,j,k
2. 初始化表達式
? [1,2] ? new Array(1,2)
? [1,,,4] [1,undefined,undefined,4]
? {x:1,y:2} var o=new Object();o.x=1;o.y=2;
3. 函數(shù)表達式
? var fe = function(){}
? (function(){})()
4. 屬性訪問表達式
? var o = {x:1}、o.x、o['x']
5. 調(diào)用表達式 //func()
6. 對象創(chuàng)建表達式
? var temp=new Func(1,2)//有參數(shù),沒有參數(shù)時也可以把括號直接去掉
? var temp=new Object;//沒有參數(shù)
? { x : 1, y : 2} 等價于 var o = new Object();o.x = 1; o.y = 2;查看全部 -
屬性有屬性標簽,對象也有對象標簽
proto標簽(原型鏈)
class標簽(表示對象的類型)
extensible(對象是否可擴展(屬性是否可添加))
var obj={x:1,y:2}
Object.isExtensible(obj);//true當前obj對象可擴展
Object.preventExtensions(obj);//修改obj對象的extensible標簽為false
Object.isExtensible(obj);//false
Object.getOwnPropertyDescriptor(obj,'x');
//Object{value:1,writable:true,configurable:true,enumerable:true}
Object.seal(obj);//將對象修改為不可刪除、不可修改屬性標簽
//Object{value:1,writable:true,configurable:false,enumerable:true}
Object.isSealed(obj);//判斷對象是否被seal操作。//true
Object.freeze(obj);//設置對象不可改不可寫不可被枚舉不可被刪除;
//Object{value:1,writable:false,configurable:false,enumerable:false}
Object.isFrozen(obj);//判斷對象是否被‘凍結(jié)’
extensible標簽只能對相應的對象進行修改,并不影響原型鏈。
序列化:JSON.stringify(obj);//將字符串傳給后端
JSON.parse('{x:1}');從后端傳給前端
查看全部 -
獲得該對象下的指定屬性的所有屬性標簽:object.getOwnPropertyDescriptor(對象,屬性名)
object.getOwnPropertyDescriptor({pro:true},'pro')//value、writable、enumerable、configurable
object.getOwnPropertyDescriptor({pro:true},'a')//undefined
var person ={};//創(chuàng)建一個新的對象
Object.definedProperty(person,'name',{屬性標簽})//添加person對象的屬性name,并設置屬性標簽
屬性標簽={value:'bs',writable:false,enumerable:true,configurable:false}
Object.defineProperty(person,'type',{configurable:true,writable:true,enumerable:false,value:'object'})
Object.keys(person);返回person對象上所有的屬性,//name,因為type不可被枚舉、遍歷
Object.defineProperties(person,{屬性1:{相應屬性標簽},屬性2:{相應屬性標簽}})//設置person對象多個屬性。
查看全部 -
get/set方法
get+屬性名+函數(shù)體(獲得時調(diào)用此函數(shù)),
set+屬性名+函數(shù)體(賦值時調(diào)用)
object.create(x)方法會返回一個對象y,y的屬性基于x的屬性
查看全部 -
var obj={x:1,y:2}
obj.x;//1
obj['y'];//2
for in有可能會讀出原型鏈上的屬性,并且順序無序
屬性讀寫:
var ovj={x:1}
obj.y;//原型鏈上也沒有,返回undefined
var yz=obj.y.z;//typeError
obj.y.z=2;//typeError
var yz;(定義一個yz用于存放obj.y.z)==? var yz=obj&&obj.y&&obj.y.z
if(obj.y){
yz=obj.y.z;
}
屬性刪除:
var person ={age:28,title:"fe"}
delete person.age;//true表示刪除成功
delete persong["title"];//true
person.age//undefined
delete persong.age;//true,只要這個對象上不存在這個屬性,用delete就會返回true
delete Object.prototype;//false
Object.getOwnPropertyDescriptor(對象,"屬性");返回對象上的這個屬性下的標簽
var descriptor=Object.getOwnPropertyDescriptor(Object,"prototype")
descriptor.configurable;//false表示不可被配置
全局變量,函數(shù)中的局部變量都不能被刪除,隱式的定義全局變量的方法可以被刪除,通過evalu定義的變量可以被delete刪除
var globalval=1;
delete globalval;//false? ??
function(){ var localval=1; return delete localval? ?}//false
ohNo =1;
window.ohNo;//1
delete ohNo;//true
屬性檢測:
對象.hasOwnProperty("屬性名");判斷對象上是否有這個屬性
cat.hasOwnProperty("leg");//true有
cat.hasOwnProperty("toString");//false對象上沒有,但是原型鏈上有,檢測不到
Enumerable(true可以被枚舉、顯示;false不能被枚舉)
cat.hasOwnProperty("leg");//true(只查找對象下的屬性)
cat.hasOwnProperty("toString");//false在查找屬性的時候就不會顯示出來
用賦值、new Object方式定義對象的屬性值的屬性標簽默認為true(可讀、可寫、可枚舉 等)
用Object.defineProperty(對象名,"屬性名","屬性下的標簽")方法創(chuàng)建的對象的屬性的屬性標簽默認值為false
Object.defineProperty(cat,"price",{enumerable:false,value:1000});創(chuàng)建一個有price屬性且不可枚舉,值為1000的cat對象
cat.propertyIsEnumerable("price");//false因為不可枚舉,返回false
cat.hasOwnProperty("price");//true
propertyIsEnumerable查找的是目標對象所有可遍歷可枚舉的屬性;
hasOwnProperty查找的是目標對象自身可遍歷的屬性;
查看全部 -
創(chuàng)建對象的方式: var obj1={x:1,y:2};
var obj2 ={x:1,y:{a:2,b:3},z:4}? ?屬性中還可以繼續(xù)嵌套對象
用自變量創(chuàng)建的對象就有原型,指向Object.prototype
原型鏈: 每個對象obj都有一個proto標簽,指向?qū)ο蟮脑玩?,原型鏈中的proto指向Object.prototype指向null
當對對象添加一個屬性并賦值的時候,不會向?qū)ο蟮脑玩湶檎遥孕聦傩詣e添加在對象中
如果要從元原型鏈上得到某個屬性的屬性值,可以用delete.obj.z刪除對象上屬性z
obj.z;再次查找屬性z時,不在對象上,則會繼續(xù)往原型鏈上找,找得到則返回,找不到則返回undefined
var obj = Object.create({x:1})(系統(tǒng)內(nèi)置的函數(shù),會接受一個對象的參數(shù))讓新創(chuàng)建的對象的原型指向參數(shù)
obj.x;//1
查看全部 -
對象中的屬性是無序的,每個屬性都有一個字符串key和對應的value
每個屬性都有屬性標簽(訪問權(quán)限的控制):writable(可讀/不可讀)、enumerable(可枚舉/不可)、configurable(可刪除/不可)、value、get/set(方法)
每個對象都有一個原型,每個對象都有一個proto對象屬性()、class標簽(表示對象屬于哪個種類)、extensible標簽(對象是否允許繼續(xù)增加屬性)
查看全部 -
函數(shù)聲明:function fd (){}? ? ? 函數(shù)表達式:var fe = function(){}
var p;? var obj ={x:1,y:2}? ? for(p in obj){}? ? ?1、順序不確定? 2、enumerable為false時不出現(xiàn)? 3、for in對象屬性時受原型鏈影響
查看全部 -
try{}catch(){}finally{}
先執(zhí)行try中的代碼,如果發(fā)生異常則進入catch,最后執(zhí)行finally
查看全部 -
var a=1;a定義的是一個局部變量
var a=b=1;定義a是一個局部變量,b是一個全局變量
var a=1,b=1;a、b定義的都是局部變量
查看全部 -
var val =(1,2,3)//逗號運算符,取最右邊的數(shù)//3
delete運算符 : delete obj.x
var obj={x:1}
obj.x;;? //1
delete obj.x;
obj.x; //undefined
var obj ={}
Object.defineProperty(obj,'x',{ configurable:false , value:1}) configurable為false是對象的值不可刪
delete obj.x;//false
obj.x;//1
in運算符 : window.x =1(定義一個全局變量x)? ? ? ? 'x' in window; //true? ? ?'x'表示屬性
typeof、instanceof、this、new、void運算符
查看全部
舉報