delete删除
1.delete可以删除对象属性
function obj(){
name='hei';
}
var obj1=new obj();
console.log(obj1.name);//hei
delete obj.name;
console.log(obj1.name);//undefined
2.变量刪除
直接用delete删除不了变量
var name='hei';
delete name;
console.log(name);//hei
3.删除不了原型链中的变量
obj.prototype.age=18;
function obj(){
name='hei';
}
var obj1=new obj();
console.log(obj1.age);//18
delete obj1.name;
console.log(obj1.age);//18
delete只适用于删除对象属性,如果想要删除对象:
var a={a:1}
a=null;//即可删除对象
charCodeAt() 方法与charAt()方法
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。.
方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串
charAt() 方法可返回指定位置的字符。
第一个字符位置为 0, 第二个字符位置为 1,以此类推
stringObject.charCodeAt(index)
index表示的是字符串的下标
注:字符串中第一个字符的下标是 0。如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN。
var str="Hello world!"
document.write(str.charCodeAt(1))
结果是:101
var str = "HELLO WORLD";
var n = str.charAt(2)
结果是:L
toString()方法
toString()函数用于将当前对象以字符串的形式返回
都知道javascript的基本类型有五种,分别是Number、String、Undefined、null和Boolean;
内置对象有Array、Boolean、Object、Function(不要以为这不是内置对象)、Number、String等,接下来,咱们就讨论这几个内置对象的toString方法。
- Boolean值
<script type="text/javascript">
var boo = new Boolean(true)
document.write(boo.toString())
</script>
true
2. Array
Array方法的toString方法,是将 Array 的每个元素转换为字符串,并将它们依次连接起来,两个元素之间用英文逗号作为分隔符进行拼接。
<script type="text/javascript">
var a1 = ["tom", 23];
a1.toString();//“tom,23"
var a2 = [];
a2.toString();//""
</script>
3.Object
返回”[object ObjectName]”,其中 ObjectName 是对象类型的名称。
<script type="text/javascript">
function car() {
wieght = 140,
height = 100,
brand = "baoma"
}
var boo = new car();
document.write(boo.toString())
</script>
4.Function
<script>
function func() {
console.log("I am a function");
}
func.toString();
输出:"function func() {
console.log("I am a function");
}"
</script>
5.Number
<script>
var n1 = Number(10);
n1.toString();//默认10进制
n1.toString(2);//2进制
n1.toString(8);//8进制
输出:
"10"
"1010"
"12"
</script>
6.String
返回 String 对象的值。
<script>
var s = "I am a string";
s.toString();
输出:"I am a string"
</script>
对象之间的=赋的都是地址
基本类型按值引用,对象类型按地址引用
<script>
let a = {};
let b = a;
a.val = 1; // 此时 a → { val: 1 }, b → { val, 1 }
a = {}; // 此时 a → {}, b → { val, 1 }
</script>
1、在JS中,以上代码段中的a其实只是保存了一个内存中的地址,每次使用a的时候其实是通过地址去找到真正的{}
2、而将a赋值给b,其实就是将a保存的地址复制给b一份,然后调用b也会去找到和a相同地址的{}
a.val = 1就是将a地址指向的对象{}增加一个值为1的属性val
3、因为b保存的地址也指向同一个对象,所以看起来就像是b也在同步变化。其实b保存的地址并没有变化。
4、a = {}则将一个新的{}的地址赋值给了a,此时覆盖掉了原来保存的{ val: 1 }对象的地址,然而b所保存的地址仍然指向原来的{ val: 1 }
splice()与slice()
都会截取一段数据
- slice(start,end)
这个函数操作的是一个数组的副本,不会改变原有的数组
从start开始截取到end但是不会包括end
返回值为截取出来的元素的集合
<script>
var arr1 = [1,23,44,55,66,77,888,"fff"];
var arr2 = arr1.slice(2,4) //从index为2截取到index为4之前不包括4
console.log(arr2); //[44,55]
console.log(arr1); // [1,23,44,55,66,77,888,"fff"]原始数组没有被改变
</script>
- splice()
有三个参数,会改变原来的数组
splice(起始位置,要删除的项数,插入的项)
- 如果要删除的项数为0,则表示不删除元素,从start位置开始添加后面的几个元素到原始的数组里面
- 返回值为由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组
<script>
var colors=["red","orange","yellow","green"];
var inserted=colors.splice(1,0,"blue","purple");//第二个参数为0,代表的是插入,在索引位置1,就是orange之前插入"blue","purple"
alert(colors);//数组colors现在变为red,blue,purple,orange,yellow,green
alert(inserted);//inserted结果为空
</script>
<script>
var removed=colors.splice(1,2);//从数组colors索引位置1开始,删除2项,返回删除项中的的第一项
alert(colors);//数组colors现在变为red,green
alert(removed);//removed结果就是orange
</script>