当前位置: 首页 > news >正文

几个api

几个api

原型链 可以阅读此文
在这里插入图片描述

Function instanceof Object // true
Object instanceof Function // true
Object.prototype.isPrototypeOf(Function) // true
Function.prototype.isPrototypeOf(Object) // true
Object.__proto__ === Function.prototype // true
Function.prototype.__proto__ === Object.prototype // true

说明下:Object和Function都是函数对象,函数对象的_proto_都指向Function.prototype,构造函数的隐式原型( proto)指向 Function.prototype, 函数对象的__proto__指向Function.prototype

自测

function Test(name, age){
    this.name = name
    this.age = age
}
Test.prototype.say = function(){
    console.log('我能说话')
}
var obj3 = new Test('Jack', 26)
var obj4 = new Test('Rose', 24)
 
1, Test.prototype === ( ) ?
2, obj3.__proto__.__proto__ === ( ) ?
3, obj3.__proto__ === obj4.__proto__ ?
4, Test.prototype.__proto__ === ( ) ?
5, obj4.__proto__.constructor === ( ) ?
6, Object.prototype.__proto__ === ( ) ?
7, obj3.say === obj4.say ?
 
 
// 1, obj3.__proto__ 或 obj4.__proto    2,Object.prototype    3, true (二者都由Test new出来,在原型链上都指向 Test.prototype)
// 4, Object.prototype    5, Test    6, null (终点)    7,true (同问题3)

Object.getPrototypeOf方法返回参数对象的原型。这是获取原型对象的标准方法。

    var F = function () {};
    var f = new F();
    Object.getPrototypeOf(f) === F.prototype // true
  	// 几种特殊对象的方法:
    // 空对象的原型是 Object.prototype
    Object.getPrototypeOf({}) === Object.prototype // true
 
    // Object.prototype 的原型是 null
    Object.getPrototypeOf(Object.prototype) === null // true
 
    // 函数的原型是 Function.prototype
    function fun() {}
    Object.getPrototypeOf(fun) === Function.prototype // true

Object.prototype.isPrototypeOf()用来判断该对象是否为参数对象的原型。

console.log(Object.prototype.isPrototypeOf({})) // true
console.log(Object.prototype.isPrototypeOf([])) // true
console.log(Object.prototype.isPrototypeOf(/xyz/)) // true
console.log(Object.prototype.isPrototypeOf(Object.create(null))) // false

和 instanceof 的区别

console.log(A instanceof B);
console.log(B.prototype.isPrototypeOf(A));

Object.defineProperty() 是 JavaScript 中用于定义或修改对象的属性的方法,可以控制属性的特性(如可枚举性、可配置性、可写性等)。

Symbol 可以参考此文

let sym = Symbol();
console.log(typeof sym); // symbol
let genericSymbol = Symbol();
let otherGenericSymbol = Symbol();
let fooSymbol = Symbol('foo');
let otherFooSymbol = Symbol('foo');
console.log(genericSymbol == otherGenericSymbol); // false
console.log(fooSymbol == otherFooSymbol); // false

属性中含symbol的对象 获取属性方法

Object.getOwnPropertySymbols() ,类似于 Object.getOwnPropertyNames() 返回对象实例的常规属性数组, Object.getOwnPropertySymbols() 返回对象实例的符号属性数组。
Object.getOwnPropertyDescriptors(),返回同时包含常规和符号属性描述符的对象。
Reflect.ownKeys() ,返回常规和符号属性的键:

let s1 = Symbol('foo'),
s2 = Symbol('bar');
let o = {
	[s1]: 'foo val',
	[s2]: 'bar val',
	baz: 'baz val',
	qux: 'qux val'
};
console.log(Object.getOwnPropertySymbols(o));
// [Symbol(foo), Symbol(bar)]
console.log(Object.getOwnPropertyNames(o));
// ["baz", "qux"]
console.log(Object.getOwnPropertyDescriptors(o));
// {baz: {value: 'baz val', writable: true, enumerable: false, configurable: true}, qux: {...}, Symbol(foo): {...}, Symbol(bar): {...}}
console.log(Reflect.ownKeys(o));
// ["baz", "qux", Symbol(foo), Symbol(bar)]

相关文章:

  • Windows 图形显示驱动开发-WDDM 3.2-自动显示切换(十)
  • MinIO在 Docker中修改登录账号和密码
  • 车床的应用场景
  • 【Excel】 Power Query抓取多页数据导入到Excel
  • 大模型智能体,企业股票量化投资分析工具
  • HTTP协议与RESTful API实战手册(二):用披萨店故事说透API设计奥秘 [特殊字符]
  • 批量给 Word 添加或设置页眉页脚/页码
  • 傅里叶分析
  • Java+Vue+uniapp微信小程序校园自助打印系统(程序+论文+讲解+安装+调试+售后)
  • DVWA -第二关-命令执行
  • Taylor龙哥库塔。各种稳定性
  • 李代数(Lie Algebras)与Attention:深度学习中的数学之美
  • Spring Cloud 的核心定义与定位
  • PMP项目管理—整合管理篇—3.指导与管理项目执行
  • 【Linux文件IO】系统IO和标准IO介绍
  • 具身智能(Embodied AI)的物理交互基准测试:构建真实世界的智能体评估体系
  • spring boot 2.7 + seata +微服务 降级失败问题修复
  • VSCode轻松调试运行C#控制台程序
  • 【C/C++】如何求出类对象的大小----类结构中的内存对齐
  • useLayoutEffect和useEffect有什么区别?
  • 殷墟出土鸮尊时隔50年首次聚首,北京新展“看·见殷商”
  • 聚焦中华文明精神标识,多校专家学者跨学科对话交流
  • 中国情怀:时代记录与家国镜相|澎湃·镜相第三届非虚构写作大赛暨七猫第六届百万奖金现实题材征文大赛征稿启事
  • 再现五千多年前“古国时代”:凌家滩遗址博物馆今开馆
  • 讲座预告|以危机为视角解读全球治理
  • 贝壳一季度收入增长42%:二手房市场活跃度维持在高位