js深入理解(二)

1.函数闭包
var scope = "global scope";
function checkScope (){ 
  var scope = "local scope";
  function f(){return scope;} 
  return f;
}//checkScope ()()输出local scope

var scope = "global scope";
function checkScope (){
    var scope = "local scope";
    function f(){
        return scope;
    }
    return f();
}//checkScope()输出local scope
2.with语句 ,将对象属性作用域链添加至顶层(在严格模式中不可用)
function Lakers() {
       this.name = "kobe bryant";
       this.age = "28";
       this.gender = "boy";
}
var people=new Lakers();
with(people)
{
       var str = "姓名: " + name + "<br>";
       str += "年龄:" + age + "<br>";
       str += "性别:" + gender;
}  
(function (){
    alert(str);
}()); //输出 姓名: kobe bryant<br>年龄:28<br>性别:boy

3.为js添加断点

function ddd(o){
	if (o==undefined) 
		{
			debugger;
		};
}
4.对象引用,引用值改变,原对象值也跟着变。
function a(){ //use constructor
	this.user="user";
	this.pwd="pwd";
	this.get="get";
	return this;
} 

 var c = a();
(function (){
	alert(c.user);
	var b = c;
	b.user = "ddd";
	alert(c.user);
}());//输出:user  ddd
5.创建对象的几种方式。
//通过构造函数创建
 var obj = new ddd("a1","a2");
 function ddd (a1,a2,){
     this.a1=a1;
     this.a2=a2;
 }
//对象直接量
 var obj =  {a1:"ddd",a2:"ccc"};

 //通过继承来创建
 var a = {x:1,y:2};
 var obj = Object.create(a);//obj继承了a

6.获取对象可枚举属性

//获取对象属性名称,返回数组
Object.getOwnPropertyNames(obj);
//获取对象属性,返回数组
Object.keys(obj);

7.对象存取器属性

var o = {
	$n:0,//$暗示私有属性
	get getN(){return this.$n;},
	set setN(n){this.$n=n;}
} ;
(function (){
	o.setN=4;
	alert(o.getN);
}());//输出 4

8.获取对象属性特性
//是否可读
Object.getOwnPropertyDescriptor({x:1},"x").writable
//获取属性值
Object.getOwnPropertyDescriptor({x:1},"x").value
//是否可枚举
Object.getOwnPropertyDescriptor({x:1},"x").enumerable
//是否可配置,该property的属性是否可以修改,property是否可以删除。
Object.getOwnPropertyDescriptor({x:1},"x").configurable
9.定义属性特性,不能定义继承的属性
	var a = {x:1};
	Object.defineProperty(a,"x",{value:4,writable:false,configurable:true,enumerable:true});
	a.x = 3;
	alert(a.x);//输出 4
//定义多个属性特性
(function (){
    var a = {x:1,y:2,$n:0,get getN(){return this.$n;}};
    Object.defineProperties(a,{x:{value:4,writable:false,configurable:true,enumerable:true},
                               y:{value:4,writable:false,configurable:true,enumerable:true},
                               getN:{get:function(){return this.$n+2;},configurable:true,enumerable:true}
});
    a.y = 3;
    alert(a.getN);/输出 2
}());








                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值