码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript语句/对象

时间:2017-10-24 19:30:07      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:添加   ror   eal   err   利用   def   理解   需要   查找   

块语句:
{语句1;语句2;语句3...}
有函数作用域、全局作用域、value作用域,没有块级作用域
var a=b=1:a是局部变量,b是全局变量

try-catch语句
try{
  try{
      throw new Error("opps");
    }finally{
      console.log("finally");
      }
    }catch(ex){
      console.error("outer",ex.message);
}
抛出顺序为:finally,outer,oops;

try{
     try{
         throw new Error("oops");
    }catch(ex){
        console.error("inner",ex.message);
        }finally{
         console.log("finally");
        }
        }catch(ex){
        console.error("outer",ex.message);
}            
抛出顺序为:inner,oops,,finally; 异常在内部处理过了,所以不会抛出到外面再去处理。
.try{
try{
throw new Error("oops");
}catch(ex){
console.error("inner",ex.message);
}finally{
console.log("finally");
}
}catch(ex){
 console.error("outer",ex.message);
}
抛出顺序为:inner,oop,finally,outer,oops;
内部的异常没有处理需要到外面去处理,处理前需先执行finally;

! function (){}(1) 表示该函数是一个函数表达式而不是函数声明,后面的(1)是将参数1传递进去,前面的!,可以理解成它是将函数声明转化成函数表达式的一种方法。
!function (){}(1)也等同于(function (){})(1);,!也可换成+、-这样的一元运算符,都可以起到相同的作用。
函数也是一种对象,arguments是它的一个属性,函数的属性还包括name,length等等。
arguments是参数对象的意思,不用写形参在函数上,也可以获取到函数上放进来的实参,利用arguments.length来获取参数个数,arguments[0],来获取第一个实参.
创建对象,new/原型链
 function foo(){}
   foo.prototype.z = 3;
   var obj = new foo();
   obj.z;    //3
   typeof  obj.toStirng;    // ‘function‘
   ‘z‘ in obj;   // true;
   obj.hasOwnProperty(‘z‘);   // false 

 

 obj.z=5;     // 若 obj 上没有 z 这个属性,就添加,有的话就修改值
 obj.hasOwnProperty(‘z‘);   // true
 foo.prototype.z;   // still 3
 obj.z;   // 5
 obj.z = undefined; 
 ojb.z;   // undefined
   --> delete obj.z;    // true   删除 obj 上的 z
       obj.z;      // 3
Object.create创建对象
 var obj = Object.create({x:1});
 obj.x;   // 1
 typeof obj.toString   // "function"
 obj.hasOwnProperty(‘x‘);   // false

 var obj = Object.create(null);
 obj.toString    // undefined

 

设置属性值时,如果当前对象没有这个属性,则会通过原型链向上查找这个属性。
1 如果原型上是通过get/set方法来定义的这个属性,那么读写都只会通过get/set方法;这种情况下只能通过Object.defineProperty来为当前对象添加这个属性。
2 如果原型上就是普通的属性赋值,那么会给当前对象增加一个属性
 
 属性标签:
不定义默认为false
value:值
writable:可修改性
enumerable:可枚举性 与for-in有关
configurable:可删除性 与delete有关

一次性定义多个属性的方法:Object.defineProperties(obj,{属性1:{属性标签们},             属性2:{属性标签们},             ……})

Object.preventExtensions():设置对象的 extensible 标签为 false,不改变对象的属性的标签;
Object.seal(): 设置对象的 extensible 标签为 false,同时改变对象的属性的 configurable 标签为 false;
Object.freeze(): 设置对象的 extensible 标签为 false,同时改变对象的属性的 configurable 标签为 false 和 writable 标签为 false;





JavaScript语句/对象

标签:添加   ror   eal   err   利用   def   理解   需要   查找   

原文地址:http://www.cnblogs.com/huhaoabc/p/7717957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!