js常用方法
js 判断值是否数组
let a = [1,'a',false]
1、Array.isArray()
用于确定传递的值是否是一个数组,返回一个布尔值,推荐使用。
Array.isArray(a) // true
2、Object.prototype.toString.call()
获取到对象的不同类。
Object.prototype.toString.call(a) === '[object Array]' // true
3、instanceof
instanceof 运算符用于检验构造函数的 prototype 属性是否出现在对象的原型链中的任何位置,返回一个布尔值。
a instanceof Array // true
a instanceof Object // true
4、constructor
prototype 原型对象里的 constructor 指向构造函数本身,实例的构造函数属性 constructor 指向构造函数。
a.constructor === Array // true
// [Function: Array]
Object.hasOwnProperty()
Object 的 hasOwnProperty() 方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。
function Person(name, fn){
this.name = name;
this.fn = fn
}
Person.prototype.sayName = function(){
console.log(this.name);
}
var p1 = new Person('rojer',function(){
console.log('fn...')
});
p1 // { name: 'rojer', fn: [Function] }
p1.hasOwnProperty('name') // true
p1.hasOwnProperty('fn') // true
p1.hasOwnProperty('sayName') // false
Object.defineProperty(obj, prop, descriptor)
obj,要定义属性的对象。 prop,要定义或修改的属性的名称或 Symbol 。 descriptor,要定义或修改的属性描述符。
descriptor 描述 configurable: false, 是否可以删除属性,是否可以修改属性的 writable 、 enumerable 、 configurable 属性。 enumerable: false, 是否可以枚举,是否可以通过 for...in 遍历到,是否可以通过 Object.keys() 方法获取属性名称 writable: false,是否可以对属性进行重新赋值 value: null, 属性的默认值 set: undefined,属性被赋值时,此方法被自动调用 get: undefined,属性被读取时,此方法被自动调用
let user = {
name: 'rojer'
}
Object.defineProperty(user, 'color', {
value: 'red', // 值
enumerable: true // 可枚举
})
Object.defineProperty(user, 'age', {
value: 3, // 值
enumerable: false // 不可枚举
})
console.log(user) // { name: 'rojer', color: 'red' }
console.log(user.color) // red
console.log(user.age) // 3
for (let key in user) {
console.log(`${key}:${user[key]}`)
// name:rojer
// color:red
}
上面 for...in 遍历,age 没有打印。
Object.keys()
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。
Object.keys(user) // [ 'name', 'color' ]
Object.getOwnPropertyNames()
Object.getOwnPropertyNames() 方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
Object.getOwnPropertyNames(user) // [ 'name', 'color', 'age' ]
转载请注明来源:《 js常用方法》- rojerYong's Blog
文章链接:https://www.eoway.cn /article/1615446431.html如果此文摘取了你的原创,请联系本站管理员,将对此文修改、删除处理。
- 微信小程序打包,主包和分包都小于2m,却上传失败
- 微信公众号网页,微信jssdk需要刷新页面才可以使用
- uniapp 微信小程序背景音频播放 uni.getBackgroundAudioManager()
- uniapp 苹果授权登录
- uniapp app 跳转到微信小程序
- js常用方法
- css 变量
- uniapp 微信公众号网页 打开小程序
- 小程序分享到朋友圈时设置path的query参数,判断用户是否通过朋友圈进入小程序
- uniapp解决原生组件层级过高覆盖页面组件的问题
- js判断是否ie浏览器、ie浏览器版本
- uniapp 设置 APP 首次打开时显示“用户协议和隐私政策”弹框
- uniapp,app端打开第三方应用(高德地图、百度地图、腾讯地图,apple地图进行导航)
- uniapp,ios打开apple地图显示自定义地点信息
- 微信小程序通过map组件获取中心点高精度经纬度以及解决ios系统map组件moveToLocation无效问题
- web性能优化,使用preload和prefetch预加载资源