js中的对象 函数 原型

// 关于 Function Object 和 proto prototype
// 1.每一个对象实例都有一个 proto 属性,这个属性就是指向 对象构造函数的原型.
let b = new Function();
console.log(b.__proto__ === Function.prototype); // true
console.log(Function.prototype); // [Function]
console.log(Function.prototype.prototype); // undefined

// 2. Function 是 Object, Object 也是 Function
console.log(Function instanceof Object); // true
console.log(Object instanceof Function); // true
console.log(b instanceof Object); // true
console.log(b instanceof Function); // true

// Function 和 Object 区别
// 1.由 Function 创造出来的实例对象,既是 Object 又是 Function
// 2.由 Object 创造出来的实例对象, 是 Object,但不是 Function
let a = new Object();
console.log(a instanceof Object); // true
console.log(a instanceof Function); // false

//
console.log(a.__proto__ === Object.prototype); // true
console.log(Object.prototype); // {}
console.log(Object.prototype.prototype); // undefined

// 如何形成原型链?
class A{
constructor(){
this.name = ‘a‘;
}
sayHi(){
console.log(‘this is a say hi!‘);
}
}
class B extends A{
constructor(){
super();
this.age = 2;
}
}

console.log(A.prototype); // {}
console.log(B.prototype); // {}

// 下面演示了 原型链
// B->A->Object
let obj = new B();
console.log(obj.__proto__ === B.prototype); // true;
console.log(B.prototype.__proto__ === A.prototype); // true
console.log(A.prototype.__proto__ === Object.prototype);
console.log(Object.prototype.__proto__); // null

console.log(A.__proto__ === Function.prototype); // true
console.log(B.__proto__ === Function.prototype); // false
console.log(B.__proto__.constructor); // [Function: Function]

// 只有 通过 new A(); 创建的对象的 proto 才指向 A.prototype

// 疑问: B.__proto__ 到底指向哪?
console.log(B.__proto__ === A.prototype); // false

原文地址:https://www.cnblogs.com/daihanlong/p/9823945.html

时间: 2024-10-09 19:20:35

js中的对象 函数 原型的相关文章

js中的对象、原型链机制、构造函数

一.在js中创建对象的方式 //一.字面量或直接量创建对象 var obj1 = { name:"zs", age:12 }; //二.通过new来创建对象 var obj2 = new Object(); obj2.name = "zs"; obj2.age = 16; //三.通过工厂函数来创建 function creatObj() { return {}; } //四.通过new 构造函数来创建 function Obj() { } //测试 var obj

JavaScript学习12 JS中定义对象的几种方式【转】

avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript

JS中的对象和方法简单剖析

众所周知,在js中对象就是精髓,不理解对象就是不理解js. 那么什么事js中的对象呢? 在js中,几乎一切皆对象: Boolean ,String,Number可以是对象(或者说原生数据被认作对象): Dates ,Maths,Regexps,Arrays,Funcitons,当然Objects,这些都是对象: JS中,所有值,除了原生值,都是对象:这些原生值包括:strings,numbers('3.14'),true,false,null和undefined 对象是包含变量的变量,js变量可

JavaScript学习12 JS中定义对象的几种方式

JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript"> var object = new Object(); object.name

浅解析js中的对象

浅解析js中的对象 说到对象,我首先想到的是每逢过年过节,长辈们老是开玩笑的问我“你找了对象没?”.不说大家都知道,这里的“对象”指的是“女朋友”,但是今天我想要说的js中的“对象”和我们生活中谈到的“对象”不是同一回事,但是其中也有着很多相似之处.    在讲js中的对象之前,我想先抛出几个疑问:    什么是对象?    对象有哪些?    对象能做什么?    如何创建对象?    如何对对象进行操作?    对象有特性么?有的话有哪些特性?    对象有属性么?有的话有哪些?对属性如何操

js中推断对象详细类型

大家可能知道js中推断对象类型能够用typeof来推断. 看以下的情况 <script> alert(typeof 1);//number alert(typeof "2");//string alert(typeof [1,2,3]);//object alert(typeof {"name":"zhuhui"})//object </script> 从上面中我们能够看出数组和普通对象用typeof推断出来都是objec

JS中有关对象的继承以及实例化、浅拷贝深拷贝的奥秘

一.属性的归属问题 JS对象中定义的属性和方法如果不是挂在原型链上的方法和属性(直接通过如类似x的方式进行定义)都只是在该对象上,对原型链上的没有影响.对于所有实例共用的方法可直接定义在原型链上这样实例化的的时候就不用对每个实例定义该属性方法,所有的实例均具有该方的引用见最后的输出. function Myclass(){ this.x=" x in Myclass"; this.get=function(){}//每次实例化对象,每个对象的该方法都是独立的,是不相同的 } Mycla

Javascript中的对象和原型(3)

在Javascript中的对象和原型(二)中我们提到,用构造函数创建的对象里面,每个对象之间都是独立的,这样就会降低系统资源的利用率,解决这样问题,我们就要用到下面提到的原型对象. 一 原型对象 原型对象实际上就是构造函数的一个实例对象,和普通的实例对象没有本质上的区别.可以包含特定类型的所有实例的共享属性或者方法.这样,如果我们需要修改所有实例中的属性或者方法,就只需要修改一处,就能够影响到所有实例了.因为原型中的属性和方法是共享的.我们可以看下两个图示:       构造函数方式 原型模式方

JS中的定时函数(setTimeout,clearTimeout,setInterval,clearInterval详解 )

设置定时器,在一段时间之后执行指定的代码,setTimeout与setInterval的区别在于setTimeout函数指定的代码仅执行一次 方法一: window.setTimeout("alert('ok')",5000); 方法二: window.setTimeout(function() { alert("Ok"); }, 5000); 方法三: function showAlert() { alert("ok"); } window.s