javascript 学习总结1

来源:互联网 发布:跨表设置数据有效性 编辑:程序博客网 时间:2024/05/29 16:21

一、从构造函数创建字面量值

1、javascript提供了叫做字面量的快捷方式——用于创建大多数原生对象值,而不必使用new  Foo()或new bar()这样的方式。

大多数情况下,字面量语法与new(加了new操作符——new后面首个字母一般大写——里面的this指的是当前创建的实例对象(是一个复杂对象),没有加new进行调用则this值将引用包含该函数的上一级对象。)

2、字面量语法与使用new操作符的效果相同,但也有例外(原始字符串、数字和布尔值)。如下:

var  egNumber = new Number(19);  // 对象

var  egNumberLiteral = 19;    // 原始数字值,非对象


var  egString = new String("str");  // 对象

var  egStringLiteral = "str"; // 原始字符值,非对象


var  egBoolean = new Boolean(false);  // 对象

var  egBoolean = false;  // 原始布尔值,非对象


以下是两种效果相同:

(1)对象的建立

var  myObject = new Object();

var  myObjectLiteral = {};


(2)数组对象的建立

var  myArray = new Array();

var  myArrayLiteral = ['foo','flo'];


(3)function对象的建立

var  myFunction = new Function("x","y","return x*y);

var  myFunctionLiteral = function(x,y){ return x*y; }


(4) 正则对象的建立

var  myRegExp = new RegExp('\bt[a-z]+\b');

var  myRegExpLiteral = /\bt[a-z]+\b/;



在针对字符串、数字和布尔值使用字面量值时,只有在该值被视为对象的情况下才会创建实际的复杂对象。

即在尝试使用与构造函数有关联的方法或检索属性之前,一直在使用原始数据类型。在这种情况下,javascript会在幕后为字面量创建一个包装器对象,以便将该值视为一个对象。调用方法以后,javascript即扔掉包装器对象,该值返回字面量类型。

这就是字符串、数字和布尔被认为是原始/简单数据类型的原因。



二、原始值和简单值

5、 ”foo"、 true、false、null、undefined等都被视为原始值,不可细化。不能表示其他值组成的值。

值比较:

采用了new关键字创建字符串、数字或布尔值时,这个值就不再是原始值,与原始值比较就不相等。

所有原始值,除null和undefined外,都通过.toString()方法被转化为对象,一旦调用和返回toString()方法,对象就会转换成原始值。

0 0
原创粉丝点击