JavaScript语句/对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript语句/对象相关的知识,希望对你有一定的参考价值。

块语句:
{语句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语句/对象的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript深入浅出补充——语句和严格模式,对象

JavaScript对象

Javascript语法,变量类型,条件,循环语句,函数,面向对象

javaScript知识体系(上)- 变量语句函数对象

JavaScript基础——变量-运算符-流程控制语句

JavaScript 循环