window.Array和window.Function
-
标准库
js内存栈内存和堆内存,栈内存有一个很重要的全局属性(全局对象)global,浏览器内叫window,window在对应的堆内存中有个hash表,hash表分为标准库和非标准库两部分,标准库就是浏览器提供给我们的各种API,像Object,String,Number,Boolean,Array,Function这些。
深度截图_选择区域_20180311114943.png
- 数据类型中的7中基本类型
* Number
* String
* Boolean
* Symbol
* Object
* undefined
* null
-
复习用法
除了Object之外,其他类型前边加new都会被包装成一个对象,
除了Object之外,其他类型前边加new都会被包装成一个对象
-
5个false值
除了0,NaN,'',undefined,null
这5个falsh值,其他的都返回true。
Number: 0,NaN; 两个
String: ''; 一个
特殊值:undefined null 两个

-
Array
Array对象是用于构造数组的全局对象,它是高阶的,类似与列表的对象。因为Array是一个函数,函数不属于任何7中类型,所以说它是一个对象。
let f = [ 'a','b'] === let f2 = new Array[ 'a','b']
Array用法:一个参数和多个参数,两种用法。一个参数时,参数就是lenght
值,keys
没有被保存,n
个参数时,length
是n
,keys
是n['0','1','2','3'……'n']
,加new效果不变。
//一个参数时
> var a = Array(3)
> a
// a的结果是length是3,每个值都是undefined的数组
数组a里边每个值都是undefined,检验这些值又不在数组里,所以说a的key没有被存下来



//两个参数时
> var a = Array(3,3)
> a
// a的结果是length是2,两个值都是3的数组


-
总结
7种基本类型,除了undefined和null之外都有构造函数,不同的是number,string,boolean这些简单类型构造函数时,加new和不加new是不同的,不加new的时候,返回的是基本类型的值,加new的时候返回的是复杂类型值,也就是对象。复杂类型Object(array,function)加不加new是相同的。
深度截图_选择区域_20180311130529.png
-
function
function:他是一个复杂类型,也就是对象,加不加new都一样。
//求和的一个函数
var f = function(a,b){
return a+b
}
//构造函数用法:参数是各个字符串形式,可以传一个或则多个参数,后边跟函数体
> var f = new Fuction('a','b','return a+b')
> f(1,2)
// 3
> f(3,4)
// 7


-
function关键字 V.S. Function函数对象
function是关键字。 等同于var,if,else。它跟string number一样都是一个名字,字符串,我们声明一个字符串或数值的时候是var a = new String(); var a = new Number;
Function 是一个对象 ,声明对象的两个方法
(1) function f(){};
(2)new Function('参数1','参数2','函数体');
var f = new Function('参数1','参数2','函数体') //用一个变量引用函数(对象)
一般都用具名函数和匿名函数
var a = 1 //声明一个变量,可能也是函数
function f(x,y){
return //可以没有参数,必须有return
} //声明一个函数 ,必须是一个函数
Function :是一个对象
window.Object
window.Function 也可以声明一个函数



网友评论