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

几个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)]

http://www.kler.cn/a/564221.html

相关文章:

  • 包子凑数——蓝桥杯真题Python
  • 如何利用爬虫技术测试淘宝商品详情接口
  • 修改CentOS 8 yum源
  • 2025年02月27日Github流行趋势
  • 国内短剧系统源码部署小程序体验测评讲解
  • WebRTC学习七:WebRTC 中 STUN 协议详解
  • 文档识别-C#中英文文档识别接口-PDF文件内容识别API
  • C# sizeof 关键字的使用
  • Python中if else以及嵌套
  • Java SSE流式数据前后端实现
  • 第2_3章_入门管理资源服务器
  • 定义数组存储3部汽车对象(class1)
  • 2025系统架构师(一考就过):案例之四:架构复用、架构评估、特定架构(DSSA)、架构开发方法(ABSD)
  • 如何利用爬虫测试1688商品详情接口
  • Python数据分析篇:(二)数组索引、切片和运算
  • 【12】智能合约开发入门
  • 基于STM32的智能家居能源管理系统
  • AI大模型-提示工程学习笔记19-自我反思
  • RISCV指令集解析
  • 大模型应用:多轮对话(prompt工程)