Object.keys(xxx)与Object.getOwnPropertyNames(xxx)

Object.keys(xxx)与Object.getOwnPropertyNames(xxx)

注意参数为p和Point.prototype的区别:

1.Object.keys(p)、Object.getOwnPropertyNames(p)

console.log(Object.keys(p))
//['x', 'y']
console.log(Object.getOwnPropertyNames(p))
//['x', 'y']

2.Object.keys(Point.prototype)、Object.getOwnPropertyNames(Point.prototype)

console.log(Object.keys(Point.prototype))
//['fun1', 'z', fun2']  只有定义在原型prototype上的结果
console.log(Object.getOwnPropertyNames(Point.prototype))
//['constructor', 'add', 'age', 'fun1', 'z', fun2'],包含所有的结果,无论是否顶底在原型prototype上

 

class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
    add(a, b) {
        return a + b
    }
    get age() {
        return this._age;
    }
    set age(x) {
        this._age = x;
    }

}
var z = 4;
Object.assign(Point.prototype, {
    fun1() {},
    z
});
Point.prototype.fun2 = function() {}

var p = new Point(1,2);
console.dir({})
console.dir(p)
//console.log(Object.getOwnPropertyNames()) //必须传参数
// console.log(Object.keys(p.prototype)) // 报错
console.log(Object.keys(p))
//['x', 'y']
console.log(Object.keys(Point.prototype))
//['fun1', 'z', fun2']
console.log(Object.getOwnPropertyNames(Point.prototype))
//['constructor', 'add', 'age', 'fun1', 'z', fun2']
console.log(Object.getOwnPropertyNames(p))
//['x', 'y']
console.log(Object.getOwnPropertyNames(new Point(3,4)))
//['x', 'y']
console.log(p.hasOwnProperty("x"))
//true
console.log(p.hasOwnProperty("y"))
//true
console.log(p.hasOwnProperty("z"))
//false
console.log(Point.prototype.hasOwnProperty("z"))
// true

p.age = 100

console.log(p.age)
//使用set age(x){}才能取到值
console.log(p.z)
//4

 

推荐这些文章:

for...of 与 for...in

for...of

for...of语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

const array1 = ['a', 'b', 'c'];

for (const element of array1) {
console.log(element);
}

// expected output: "a"
// expected output: "b"
// expected output: "c"

for...in

for...in语句...

原型方法与对象方法优先级

let hs={
show(){
console.log("first");
},
render(){
console.log("render");
}
};
console.log(hs);
// Object.prototype.show=function(){
// console.log("111");
// };

hs.__proto__.show=function(){
console.log("111");
};
hs.show();

// Object.prototype.show();
...

判断函数类型 Object.prototype.toString().call

1.判断普通匿名函数

var obj1 = Object.prototype.toString.call( function(){});
console.log(obj1);
console.log(obj1 === '[object Function]');

2.判断异步函数

var obj2 = Object.prototype.toString.call( async function(){});
console.log(obj2);
console.log(obj2 === '[object AsyncFunction]');

&nbs...

[Javascript] Conditional add prop to Object

const b = true
const c = false
let object = {
a: 1,
...(b ? {b: 2}: {}),
...(c ? {c: 3}: {})
};
console.log(object) // { a: 1, b: 2 }

 

...

vs code 正则代码注释掉所有的console.log输出。

项目正式上线后,需要去掉所有的console.log输出。有专门的工具。
但如果嫌麻烦,可以直接用正则表达式,一行代码注释掉所有的的console.log输出。
搜索内容:(\n\s*)console.log
替换内容:
$1// console.log
 

大功告成。

...

js 如何判断变量类型

自定义一些类型

const boolean = true
const string = '这是一个字符串'
const number = 1
const array = []
const object = { name: '张三' }
const functionType = function () {}
const nan = NaN
const undefinedType = undefined
const nullType = null
const Reg = new RegExp()
const set = new Set()
const map = new Map()
const...

对javascript获取对象属性的几种方法梳理

1、Object.getOwnPropertyNames()
返回 对象 自身及原型链上所有的属性名的数组
2、Object.keys()
返回 对象 自身及其原型链上可枚举的属性名的数组
3、for (key in object)
与2、Object.keys()相同
4、Ojbect.values()
返回 对象 自身及其原型链上可枚举的属性值的数组
5、for (value of object)
没有实现迭代器(iterable)协议无法会报错
6、Object.entries()
返回 [[属性名,属性值],[属性名,属性值]...] 这样的二维数组
我测试的结果

下面是代码,可拿...

类和类的方法

1:定义类和定义构造函数差不多,并且很多特性也和构造函数一致

1 class Person {
2 name = 'tyy'
3 }
4 var p = new Person
5 console.log(p);
6 console.log(p.__proto__);
7 console.log(p.__proto__.__proto__);
8 console.log(p.__proto__ === Person.prototype);

 
 2:类的实例方法,类的访问器方法以及类的静态方法
实例方法:对象点调用,静态方法:类名点调用

1 class P...

js各类数据类型的判断

1.typeof:

  在js中使用typeof只能判断基本数据类型,即number,string,boolean,undefined,object。对于数组函数对象等复杂类型来说,使用typeof都会统一返回object字符串。
 

2.instanceof:

  用来判断a是否为b的实例,表达式为a instanceof b ,要注意的是,instanceof检测的是原型,通俗的说instanceof用来比较一个对象是否为某一个构造函数的实例,注意,instanceof可以准确地判断复杂数据类型,但是不能正确判断基本数据类型。

console.log(12 insta...

js基础-对象-对象遍历

背景
工作中经常会用到对象的遍历,现在推荐其中两种常见的方式
let obj = {
a: 1,
b: 2,
c: 3
}

方式1(for...in...)常用于普通遍历
// 1. for...in...
for(let key in obj){
console.log(key, obj[key]);
}
// a 1
// b 2
// c 3

方式2 (Obje...

文章标题:Object.keys(xxx)与Object.getOwnPropertyNames(xxx)
文章链接:https://www.dianjilingqu.com/51586.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>