最新消息:flex弹性布局更新完毕,阅读地址:http://www.01happy.com/css-flex/

JavaScript字符串为什么可以点出方法来

javascript 43浏览 0评论

在JavaScript中,字符串可以直接点出来方法和属性来,例如:

let str = "hello";
console.log(typeof str); // string

console.log(str.length); // 5
console.log(str.indexOf("e")); // 1

照理说字符串不是对象,应当是不行才对。如果说字符串是对象,那么请看下面代码:

let str = "hello";
str.id = 10; // 不报错
console.log(str.id); // undefined

str.id 输出是undefined的。

那么这个是为什么呢?这个涉及到JavaScript中原始值包装类型

当调用字符串类型的方法时,会创建一个包装对象,使用完成后就销毁了

let str = "hello";
console.log(str.indexOf("e")); // 1

// 过程相当于如下代码

let temp = new String("hello"); // 创建包装对象
console.log(temp.indexOf("e")); // 1 // 执行对应的方式
temp = null; // 销毁

那么上面设置str.id=10,但是又没有读取到是什么情况呢?因为包装对象创建完后就销毁了,属性是创建在包装对象上

let str = "hello";
str.id = 10; // 不报错

// 过程相当于如下代码


let temp = new String("hello"); // 创建包装对象
temp.id = 10; // 不报错
temp = null; // 销毁

既然创建完成后就销毁了,自然就不存在了。

转载请注明:快乐编程 » JavaScript字符串为什么可以点出方法来

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址