当前位置:首页 > Web开发 > 正文

(所以不提倡这种做法) var str= " hello world " ; var str2= " 哈哈 我的长度也为

2024-03-31 Web开发

JS的数据类型:

根基类型:Undefined, Null, Boolean, Number, String
引用类型:Object, Array, Date, RegExp (其实就是东西)

JS中只有东西才有属性和要领,原始值没有属性和要领
那么我们泛泛求字符串的长度 用length属性不是没有问题吗?

var str="hello world"; var long=str.length; console.log(long); //得出功效为11

这是因为js中供给了三种特殊的引用类型(String Number Boolean)每当我们给原始值赋属性值时 后台城市给我们偷偷转换 挪用包装类
怎么进行“包装”的?

举个例子 用事实措辞吧:(注释的部分就是后台为我们偷偷干的事)

var str="hello word"; //var str = new String("hello world"); // 1.创建出一个和根基类型值不异的东西 //var long = str.length; // 2.这个东西就可以挪用包装东西下的要领,并且返回结给long变量 //str = null; // 3.之后这个姑且创建的东西就被销毁了 var long=str.length; //因为str没有length属性 所以执行这步之前后台会自动执行以上三步操纵 console.log(long); // (功效为:10) //var str = new String("hello word"); // 1.因为下面有输出创建出str.length 而str不应该具有length这个属性 所以再次斥地空间创建出一个和根基类型值不异的东西 //str.length=nudefined; // 2.因为包装东西下面没有length这个属性没有值,,所以值是不决 //str = null; // 3.这个东西又被销毁了 console.log(str.length) // (功效为:undefined)


给根基类型添加属性和要领:

可是我们如果想给根基类型添加属性和要领,又该怎么办呢?
可以在根基包装类的原型上实现:

固然 如果要计算字符串的长度这是完全没有须要的,你使用length属性就可以了 这里只是展示了一种 给根基类型添加属性的要领

//给字符串添加要领 要写到对应的包装东西的原型下才行 var str= "hello world"; //若我们想在原型上设置一个属性long 生存字符串的长度 //var str = new String("hello world");// 1.找到根基包装东西,创建一个和字符串值不异的东西, //String.prototype.long=str.length; // 2.通过这个东西找到了包装东西下的要领并挪用 //str=null; // 3.这个刚创建的东西被销毁 String.prototype.long=str.length;// 执行到这一句,同样因为没有length属性 后台会偷偷的执行上述三步操纵 console.log(str.long); //功效为:11


注意:这样因为你是给根基类型string的原型上添加的属性,所以任意一个字符串都可以访谒到这个属性及此值。(所以不倡导这种做法)

var str= "hello world"; var str2="哈哈 我的长度也为11吗?"; String.prototype.long=str.length; console.log(str2.long); //功效为:11

js包装类

标签:

原文地点:https://www.cnblogs.com/niuyaomin/p/12184426.html

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31698.html