复习
var xiaoming = new People();
//此时:
xiaoming._proto_===People.prototype
系统内置很多的构造函数,他们也叫做我们的基本类型值,也叫做 引用类型值的"包装类"。
1 ,系统内置了Object函数,可以直接new它,返回一个空对象.然后可以给这个空对象添加属性
var obj = new Object();
cosole.log(obj); //Object{}
obj.a=1;
obj.b = 2;
console.log(obj);//Object{a:1,b:2}
也就是说
var obj = new Object();
obj.a=1;
obj.b = 2;
等价于
var obj ={
"a":1,
"b":2
}
所以,我们得出结论,任何一个JSON的proto都是Object.prototype
//字面量也是new Object()new出来的
var obj ={
"a":1,
"b":2
}
alert(obj._proto_===Object.prototype); //true
工作中,我们一般写字面量,不写var obj = new Object().即使我们需要一个空对象 ,我们也喜欢:
var obj ={};
Object.prototype是所有对象的原型链终点
var obj = new Object();
cosole.log(obj); //Object{}
obj.a=1;
obj.b = 2;
console.log(obj);//Object{a:1,b:2}
2.Function函数
系统内置了一个Function的构造函数,用于构造函数。事实上,所有的function字面量都是它的实例
//定义函数的字面量方法
//function sum(a,b){
// alert(a+b);
//}
//sum(43,5);
//创建一个sum函数 ,用构造函数构造一个函数
var sum = new Function("a","b","alert(a+b";);
//alert(typeof sum) //function
sum(4,5) //9
在new Function的时候 ,先罗列所有的形参列表,最后一个参数是函数里面的语句,注意,参数都是字符串!!实战中,不可能用这种方法new函数
任何函数,都是Function实例
function add(a+b){
alert(a+b);
}
alert(add._proto_===Function.prototype); //true
任何函数都是Function的实例,Object也是Function的实例,Function自己也是自己的实例!
alert(Object._proto_===Function.prototype);//true
Function._proto_===Object.prototype //false
Function._proto_._proto_==Object._proto_._proto__ //true
Array函数
Array是系统内置的数组构造函数,用于构造数组
var arr = new Array();
arr[0] = 324;
arr [1] =435;
console.log(arr) //[324,435]
//等价于
var arr = [324,435];
有一个坑,就是里面能够写参数 ,表示数组的长度,但是数组还是空数组,每一个项不是undefined.
var arr = new Array(5);
console.log(arr); //[]
console.log(arr.length); //5
console.log(arr[0]) //undefined
var arr =[];
alert(arr[3456464]); //undefined
var arr = new Array(5);//这里的5表示数组默认5项,但是没有任何约束力
console.log(arr.length); //5
等价于
var arr =[];
arr.length = 5;
console.log(arr.length); //5
//此时这个5没有用,还是可以添加第6项第七项等等
arr[6] ="hello"
有一个题目和它有关系:写一个函数,接受两个参数:数字n和字符串str,函数返回重复n次的str,用一句话来实现
屌丝程序员:
function repeat(n,str){
var result = "";
for(var i =0;i<n;i++){
result+=str;
}
return result;
}
alert(repeat(3,"你好"))//你好你好你好
大神:
function repeat(n,str){
return(new Array(n+1).join(str));
}
alert(repeat(3,"你好"))//你好你好你好
解释
["东风","大本","喝酒"].join("你好")
//"东风你好大本你好喝酒"
["","",""].join("你好")
//"你好你好"
[,,].join("你好")
//"你好"
(new Array(3)).join("你好")
//"你好你好"
所以创建一个长度是n+1的数组,里面的空挡就有n个。此时用str链接,就行了。
任何数组字面量,都是Array的实例
var arr =[324,324,5,66];
console.log(arr._proto_==Array.prototype); //true
console.log(arr._proto_.proto_===Object.prototype);//true
4 RegEXP函数
任何一个正则表达式,都是RegExp函数的实例
var reg=/\d/g;
等价于
var reg= new RegEXP("\\d","g");
var str="你好啊123"
str = str.replace(reg,"A");
alert(str); //你好啊AAA
注意:这是把字符串变为正则对象的方法,怎么用,我们后面NodeJs有一个案例用到这个,实时搜索。
网友评论