JavaScript类型·对象·函数

来源:互联网 发布:java类的命名规范 编辑:程序博客网 时间:2024/06/03 10:36

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"

原创粉丝点击