Js代码
复制代码
代码如下:
/**
*删除数组指定下标或指定对象
*/
Array.prototype.remove=function(obj){
for(var
i
=0i
<this.lengthi++){
var
temp
=
this[i]
if(!isNaN(obj)){
temp=i
}
if(temp
==
obj){
for(var
j
=
ij
<this.lengthj++){
this[j]=this[j+1]
}
this.length
=
this.length-1
}
}
}
使用方法:
Js代码
复制代码
代码如下:
var
arr
=new
Array()
arr[0]="dddddd"
arr[1]="dxxxxxxx"
arr[2]="vvvvvvv"
arr[3]="dbbbbb"
var
str
="vvvvvvv"
arr.remove(3)//删除下标为3的对象
arr.remove(str)//删除对象值为“vvvvvvv”
在vue中使用vue.delete()
删除对象属性
通过delete操作符, 可以实现对对象属性的删除操作, 返回值是布尔
例: var obj={name: 'zhagnsan',age: 19 }
delete obj.name //true
typeof obj.name //undefined
同样可用于函数,数组,变量,对象,但对象不能删除,只能做到删除对象属性
删除变量
例: var name ='zs' //已声明的变量
delete name //false
console.log(typeof name) //String
age = 19 //未声明的变量
delete age //true
typeof age //undefined
this.val = 'fds' //window下的变量
delete this.val //true
console.log(typeof this.val) //undefined
删除数组
以声明数组返回false,未声明返回true
var arr = ['1','2','3'] ///已声明的数组
delete arr //false
console.log(typeof arr) //object
arr = ['1','2','3'] //未声明的数组
delete arr //true
console.log(typeof arr) //undefined
var arr = ['1','2','3'] //已声明的数组
delete arr[1] //true
console.log(arr) //['1','empty','3']
删除函数
var fn = function(){} //已声明的函数
delete fn //false
console.log(typeof fn) //function
fn = function(){} //未声明的函数
delete fn //true
console.log(typeof fn) //undefined
删除对象
var person = {
height: 180,
long: 180,
weight: 180,
hobby: {
ball: 'good',
music: 'nice'
}
}
delete person ///false
console.log(typeof person) //object
var person = {
height: 180,
long: 180,
weight: 180,
hobby: {
ball: 'good',
music: 'nice'
}
}
delete person.hobby ///true
console.log(typeof person.hobby) //undefined
第一种方法是比较彻底的,使用delete删除之后,JS的垃圾处理机制会自动将无指向的函数占用空间删除。同时 delete删除之后的一个对象,会连同名称一起,在这个对象中被删除清空。
而a.show=null,只不过是将这个对象的一个名为show的键值给赋予了一个null的数据,虽然占用空间会急剧缩小,但这个键值还是存在于这个对象中的。
至于没有了指向的function(){alert()}这个函数,会被垃圾回收机制消除掉,释放内存空间。