JS基本类型与无法定义的属性

来源:互联网 发布:cad中网络接口怎么画 编辑:程序博客网 时间:2024/06/05 11:11

在浏览器中,变量一旦声明为基本类型,则再也无法为其添加其他属性,示例如下:

//  变量一旦声明为基本类型,则无法添加属性  var username = 'yiifaa'username.from = 'china'//  输出为undefinedconsole.log(username.from)

改为严格模式,再测试如上代码:

"use strict";var username = 'yiifaa'username.from = 'china'console.log(username.from)

执行上面的代码,则直接提示如下错误:

Uncaught TypeError: Cannot create property 'from' on string 'yiifaa' at 1.html:21

可见,基本类型无法添加属性,切换为Object.defineProperty方式,依旧提示错误:

var username = 'yiifaa'Object.defineProperty(username, 'from', {    value : 'china'})console.log(username.from)

错误信息如下:

Uncaught TypeError: Object.defineProperty called on non-objectat Function.defineProperty (<anonymous>)at 1.html:17

很明确的错误提示信息,无法为非对象类型定义属性。

如果,确实要为String添加自定义属性,则需要修改声明方式,如下:

var username = new String('yiifaa')//  输出为objectconsole.log(typeof username)

现在username变量已支持自定义属性的添加了。

结论

不同的变量声明方式会导致变量具有不同的特性,如String()与new String()、Boolean()与new Boolean(),基本类型与否,则决定了以后的操作范围。

原创粉丝点击