1、isFinite(num)num不在正无穷和负无穷之间则返回false
isFinite(Number.MAX_VALUE+Number.MAX_VALUE) false
2、NaN与任何值都不相等
alert(NaN == NaN) false
isNaN(10) false 参数为整数或者可以转化为整数则返回false
3、0.1+0.2 != 0.3
4、arguments参数 arguments[0]第一个参数
5、
function setName(obj){
obj.name='twj';
obj = new Object();
obj.name='wye';
}
var person=new Object();
setName(person);
console.log(person.name);
VM244:8 twj
6、
function setName(obj){
obj.name='twj';
//obj = new Object();
obj.name='wye';
}
var person=new Object();
setName(person);
console.log(person.name);
VM245:8 wye
7、
var color="blue";
function changeColor(){
if(color==="blue"){
color="red";
}else{
color="blue"
}
}
changeColor();
console.log(color);
VM424:10 red
8、
var arr=["wjt","yew"];
alert(arr);
alert(arr.toString());
alert(arr.toLocaleString());
console.log(arr);
VM178:5 ["wjt", "yew"]
9、数组
分割arr.join(",") arr.join("||")
array push pop后入先出
array shift取第一项并移除 unshift从第一项加入进去
var values = [0,1,5,10,15,20];
values.sort();
[0, 1, 10, 15, 20, 5]全部转化为字符串进行比较的
function compare(a,b){
return a-b;
}
var values = [0,1,5,10,15,20];
values.sort(compare);
[0, 1, 5, 10, 15, 20]
concat连接数组
slice分割数组
10函数
每个函数都包含length和prototype两个属性
length参数个数
prototype 下面含有 toString() valueOf()等
每个函数都包含非继承来的方法 apply()和call() (作用相同 特定作用域)
apply(this,arr)
call(this,num1,num2)
对象的数据属性
var person = {}
Object.defineProperty(person,'name',{
configurable:false,//能否使用delete、能否需改属性特性、或能否修改访问器属性、,false为不可重新定义,默认值为true
enumerable:false,//对象属性是否可通过for-in循环,flase为不可循环,默认值为true
writable:false,//对象属性是否可修改,flase为不可修改,默认值为true
value:'xiaoming' //对象属性的默认值,默认值为undefined
});
//value
console.log(person);//xiaoming,默认value
//writable
person.name="qiang";
console.log(person);//xiaoming,不可修改value
//enumerable
for(var i in person){
console.log(person[i]) //无结果,不可循环
}
//configurable
delete person.name
console.log(person.name)//xiaoming,不可删除
Object.defineProperty(person,'name',{
configurable:true //不可修改,将抛出错误
});
读取对象的属性 getOwnPropertyDescriptor
js创建对象的几种方式
工厂模式
function createPerson(name,age,job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.name);
}
return o;
}
var person1 = createPerson('twj',27,'cxy');
构造函数
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.sayName = function(){
alert(this.name);
}
}
var person1 = new Person("twj", 27, "cxy");
console.log(person1);
VM1311:10 Person {name: "twj", age: 27, job: "cxy"}
没有显式地创建对象;
q 直接将属性和方法赋给了 this 对象;
q 没有 return 语句。
原型模式
js中每个函数都有一个prototype属性,是一个指向某个对象的指针。这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。
function Person(){}
Person.prototype.name = "twj";
Person.prototype.age =27;
Person.prototype.sayHello = function(){
return "hello,I'm twj";
};
hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。(属性中存在返回true)
isPrototypeOf:是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。
继承
arguments.callee 本身
JS数组中every()与some()两者迭代方法
every()与some()方法都是JS中数组的迭代方法。every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true。
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum);
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。