-
m@ rk查看全部
-
一般对象都会有一个原型,或者它的原型指向Object.prototype, 数组中是按照字母进行排序,当排序的是数字时 会将数组转换成相应的字母在排序,就会出现问题了 数组逆序和排序都是对原数组本身进行修改 如果concat的数组中还有数组则会拉平但是只会拉平一次() 如果要对数组进行排序则要arr.sort(function(a,b){return a-b;}) 注意:数组的合并则不会对原数组进行修改 返回部分数组arr.slice();查看全部
-
稀疏数组并不含有从0开始的连续索引,一般length属性值比实际元素个数大。查看全部
-
数组的长度 from 0 to 2^23-1 创建数组的两种方式: 1.字面量数组 var arr=['Yeoman',234,true]; 2.new Array(); var arr=new Array(3); 给数组增加一个元素arr[5]=add; 从数组中删除一个元素delete arr[0]用delete删除一个元素其数组长度不变只是将arr[0]的中值改成了undefined 动态的,无需指定大小 添加元素 在数组的尾部添加值可用 arr.push(3); 后 arr[arr.length]=3 在数组的首部添加值可用 arr.unshift(0)//将0添加到arr数组的首部 删除元素 在数组中删除尾部的值 arr.length-=1; arr.pop(); 在数组中删除首部的值 arr.shift(); 数组迭代 for in 不保证数组的顺序 如果要保证数组的顺序要用常规的for语句查看全部
-
ems3 不支持object.create 解决办法查看全部
-
属性读写: var obj={x:1,y:2}; obj.x;//1 obj["y"];//2 var obj={x1:1,x2:2}; var i=1;n=2; for(;i<=n;i++) { console.log(obj['x'+i]);//输出1,2;拼接属性名的时候一般用到中括号 } var p; for(p in obj) { console.log(obj[p]);//有可能会把原型链上的属性遍历出来,因为属性是无序的 } 属性删除: var person={age:28,title:'fe'}; delete person.age;//true delete person['title'];//true person.age;//undefined delete person.age;//true delete Object.prototype;//false(不允许删除) var descriptor=Object.getOwnPropertyDescriptor(Object,'prototype'); descriptor.configurable;//false(不可配置,所以delete Object.prototype为false) 全局变量不可被删除: var globalVal=1; delete globalVal;//false 属性检测: var cat=new Object; cat.legs=4; cat.name="kitty"; 'legs' in cat;//true (in查找会一直查找到原型链并且无序) 'abc' in cat;''false "toString" in cat;//true,inherited property!(因为cat的原型是Object.Prototype,而object.Prototype.toString是存在的,所以返回true) cat hasOwnProperty('legs');//true cat.hasOwnProperty('toString');//false(cat本身是没有toString属性的,它的原型链才有,所以返回false)查看全部
-
对象创建: var obj2{ x:1, y:2, o:{ z:3, n:4 } } 原型链: function foo(){} foo.prototype.z=3; var obj=new foo(); obj.x=1; obj.y=2; obj.x;//1 obj.y;//2 obj.z;//3 typeof obj.toString;//'function' 'z' in obj;//true obj.hasOwnProperty('z');//false obj.z=5; obj.hasOwnProperty('z');//true foo.prototype.z;//still 3 obj.z;//5 delete obj.z;//true obj.z;//3 Object.create对象创建: var obj=Object,create({x:1}); obj.x;//1 tyoepf obj.toString//"function" obj.hasOwnProperty('x');//false var obj=Object.create(null); obj.toString;//undefined查看全部
-
构造函数都会有一个prototype属性(对象属性)。 对象属性使用new构造函数去创建对象原型。 object instanceof object会在原型链上查找,然后比较对象是否相等,js按照引用判断对象是否相等,不能垮框架iframe。 function Person(){} function Student(){} Student.prototype = new Person()(创建对象实例,这个对象实例会有原型指向Person.prototype对象) var bosn = new Student()(创建一个Stundent实例) 对象具有原型,原型指向构造器。prototype属性查看全部
-
不同类型的比较,进行类型转换的逻辑。 number==string string转number boolean==? boolean转number true==1/false==0. object==numberstring object转为基本类型。查看全部
-
技巧: num-0;num转为number num+'':num转为string 0==false true null == undefinded true Object()==Object() NaN != NaN查看全部
-
严格模式: 严格模式是一种特殊的执行模式,它修复了部分语言上的不足,提供更强的错误检查,并增强安全性。 eg: function func() { 'use strict'; //在开头写上'use strict' ,表明一下语句都在严格模式下执行;如果写在全局,则 表明全部语句都在严格模式下执行 } 严格模式下的特点: 1.不允许使用with;//报SyntaxError错误(语法错误) 2.不允许未声明的变量被赋值;//报ReferenceError错误(引用错误) 3.arguments变为参数的静态副本; 4.delete参数、函数名报错;//报SyntaxError错误(语法错误) 5.delete不可配置的属性报错;//报TypeError(类型错误) 6.对象字面量重复属性名报错;//SyntaxError 7.禁止八进制字面量;// 8.eval,arguments变为关键字,不能作为变量、函数名; 9.eval独立作用域;//undefined查看全部
-
function: fd();//true function fd() { //do sth } fe();//TypeError var fe=function() { //do sth }; for..in: var p; var obj={x:1,y:2} for(p in obj) { } 1.顺序不确定 2.enumerable为false时不会出现 3.fo..in对象属性时受原型链影响 switch: var val=2; switch(val) { case 1: console.log(1); break; case 2: console.log(2); break; default: console.log(0); break; } 循环: while(isTrue) { //do sth } do { //do sth }while(isTrue) for(var i=0;i<n;i++) { //do sth }查看全部
-
读写属性的方式 创建一个foo空函数, 创建一个obj对象,var obj=new foo(); 则obj对象的原型会指向foo.prototype查看全部
-
块 block: 请注意:没有块级作用域,但是有函数作用域 eg: for(var i=0;i<10;i++) { ... } 和 var i=0; for(;i<10;i++) { ... } 一样。查看全部
-
属性删除: var globalVal=1; delete globalVal;//false 不可被删除 但是如果是隐式的创建一个全局变量 eg:ohNo=1; window.ohNo;//1 delete ohNo;//true 可以被删除 如果只用等于那么null与undefined是相等的,而严格等于则null与undefined不相等查看全部
举报
0/150
提交
取消