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

//  变量一旦声明为基本类型,则无法添加属性
var username = 'yiifaa'
username.from = 'china'
//  输出为undefined
console.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-object
at Function.defineProperty (<anonymous>)
at 1.html:17

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

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

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

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

结论

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

JS基本类型与无法定义的属性相关推荐

  1. JS基础类型的属性赋值问题

    在Javascript中,变量的类型一旦声明为基础类型,如果再为基础类型的变量添加属性,则其新建的属性不可存储,会自动销毁,基本流程如下: 1. 首先将基础类型临时转换为Object类型,并备份好基础 ...

  2. js如何操作表格(常用属性方法汇总)

    js如何操作表格(常用属性方法汇总) 一.总结 一句话总结: 二.表格相关的属性和方法 1.1 Table 对象集合 cells[] 返回包含表格中所有单元格的一个数组. 语法:tableObject ...

  3. 第一记: JS变量类型判断(VUE源码解读)

    学习摘要 : 以前总是对js变量类型的判断模糊不清楚,今天看到vue源码后才恍然大悟原来大神都是这样弄的,所以加以总结,写的不好的请大神们多多吐槽吐槽!!!!!! Vue 源码 /* 获取值的原始类型 ...

  4. 【笔记】js Function类型 内部方法callee

    运用function实现阶乘 以往的做法是如下的 function factorial(num){if(num <= 1){return 1;}else{return num * factori ...

  5. ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型(包括类别编码+属性重要程度排序)问题(实数值年龄预测)

    ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型(包括类别编码+属性重要程度排序)问题(实数值年龄预测) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 x ...

  6. 判断一个js对象,是否具有某个属性

    一个对象,想必我们关注的最多的应该是它上面的属性有哪些吧.那么,怎么判断一个对象是否具有某个属性呢? 1 /*下面是一个对比,看看在判断是否包括一个键上面,Object结构和Set结构的写法不同.*/ ...

  7. js布尔类型+数字判断_C ++中的布尔数据类型

    js布尔类型+数字判断 In this article, we'll take a look at the Bool datatype in C++. 在本文中,我们将介绍C ++中的Bool数据类型 ...

  8. html js修改readonly,js控制html元素的readonly属性

    html元素假设为只读,那么其readonly="readonly",我们现在想通过js来改变readonly属性为可以输入. 初始时,两个输入框都是只读.点击change按钮后, ...

  9. js如何修改对象的padding属性

    js如何修改对象的padding属性 $(".process_body").css("padding","16px 5px 5px 16px" ...

最新文章

  1. .net使用websocket
  2. 如何使用Android SDK开发Android应用?
  3. Java学习笔记二十六:Java多态中的引用类型转换
  4. 数据库逻辑删除的sql语句_通过数据库的眼睛查询sql的逻辑流程
  5. Scikit-Learn与回归树
  6. Asynchronous HTTP Requests in Android Using Volley
  7. Linux中/etc/fstab /etc/mtab /proc/mounts这三个文件的分析与比较
  8. Dev-C++/Cpp使用入门详解
  9. Blender全新毛发工具演示露出,预计9月份正式更新
  10. 帮嫦娥五号登月的AI还能用来玩游戏,20行Python代码带你领略强化学习的风采
  11. Linux编程学习笔记-多进程编程
  12. 网络图片地址直接转Base64
  13. Unity-URP学习笔记(八)使用RendererFeature制作屏幕后期-高斯模糊
  14. Java版俄罗斯方块
  15. 蓝奏云软件库源码分享下载(后端源码)
  16. 修改CheckBox选择框、设置选择框颜色
  17. 使用本地CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box创建三个k8s集群虚拟机
  18. 音圈电机工作原理与直线电机的对比
  19. Jdk1.8 Collectors类使用详解(实用干货)
  20. linux kill进程 不发送fin,linux – FIN省略,FIN-ACK发送

热门文章

  1. Streptavidin-MAL,Maleimide 马来酰亚胺修饰/标记/偶联链霉亲和素
  2. K-means聚类最优k值的选取
  3. 「IT基础」计算机网络原理课程及其作用
  4. 刘可-寂寞才说爱 试听+下载+歌词
  5. 失无所失的伤感空间日志分享:我会一直这样爱着你,心甘情愿
  6. EEPROM 编程器
  7. 国产CPU整体性能和发展情况一览表
  8. 领导驾驶舱如何助力领导做决策?
  9. 为什么保持代码整洁如此重要
  10. 亚马逊爆款的流量密码原来这么简单 六个步骤打造爆款