JavaScript类型·对象·函数

ECMAScript是一种由Ecma国际通过ECMA-262标准化的脚本程序设计语言,它往往被称为JavaScriptJScript,但实际上后两者是ECMA-262标准的实现和扩展。

ECMAScript对象

定义为“属性的无序集合,每个属性存放一个原始值、对象或函数”

  • 对象由特性attribute构成,特性可以是原始值,也可以是引用值。如果特性存放的是函数,它将被看作对象的方法method,否则该特性被看作对象的属性property
  • ECMAScript中的所有对象的所有属性和方法都是公用的。

ECMAScript对象类型

  • 本地对象:独立于宿主环境的ECMAScript实现提供的对象,即引用类型。
  • 内置对象:由ECMAScript实现提供的、独立于宿主环境的所有对象,在ECMAScript程序开始执行时出现的,即GlobalMath,每个内置对象都是本地对象。
  • 宿主对象:所有非本地对象都是宿主对象host object,即由 ECMAScript实现的宿主环境提供的对象。所有BOMDOM对象都是宿主对象。

JavaScript创建对象

//混合构造函数和原型方式
function Person(name,age){
    //构造函数中定义的属性,这些属性每次创建对象都会被创建一次
    this.name=name;
    this.age=age;
    this.friends=new Array("Mike","John");
}
Person.prototype.showFriends=function(){
    //原型方式中定义的属性,这些属性只会被创建一次,
    alert(this.friends);
}
//动态原型
function Person(name,age){
    this.name=name;
    this.age=age;
    this.friends=new Array("Mike","John");
    if(typeof Car._initialized==="undefined"){
        Car.prototype.showFriends=function(){
            alert(this.friends);
        }
    }
    Car._initialized=true;
}

数据类型type

  • 原始类型primitive type
    1. Number:不区分整数和浮点数。
    2. String:以单引号’或双引号”括起来的任意文本。
    3. Boolean:只有truefalse两种值。
    4. Null:只有一个专用值null
    5. Undefined:只有一个值,即undefined。当声明的变量未初始化时,该变量的默认值是undefined
  • 引用类型(本地对象)
    1. Object,Function,Array,…
    2. String,Boolean,Number,Date,RegExp,…
    3. Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,…

函数Function

**ECMAScript的函数实际上是功能完整的对象。
函数名只是指向该函数对象的引用值(地址)。
尽管可以使用Function构造函数创建函数,但最好不要使用它,因为用它定义函数比用传统方式要慢得多。不过,所有函数都应看作Function的实例。**

//用Function类直接创建函数
var function_name = new function(arg1, arg2, ..., argN, function_body);
//等价于直接定义函数
function function_name(arg1, arg2,...,){//这些参数必须是字符串
    function_body;
}

闭包

指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。

var sMessage = "hello world";
function sayHelloWorld() {
  //sayHelloWorld()函数根本不接受参数,它使用的值是从执行环境中获取的。
  alert(sMessage);
}
sayHelloWorld();

该脚本被载入内存后,并没有为函数sayHelloWorld()计算变量 sMessage的值。该函数捕获sMessage的值只是为了以后的使用,也就是说,解释程序知道在调用该函数时要检查sMessage的值。sMessage将在函数调用sayHelloWorld()时(最后一行)被赋值,显示消息"hello world"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值