2018一级a做爰片免费网站,软件工程师好找工作吗,手机赚钱软件,什么是网站建设的三次点击原则JS原型与原型链
JavaScript中一切引用类型都是对象#xff0c;对象就是属性的集合。
Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。
原型是什么 总计一句话就是#xff08;继承里的父亲#xff0c;你可以使用你的原型里的函数#xff09;…JS原型与原型链
JavaScript中一切引用类型都是对象对象就是属性的集合。
Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。
原型是什么 总计一句话就是继承里的父亲你可以使用你的原型里的函数
在JavaScript中原型Prototype是一个非常重要的概念它允许对象之间共享方法和属性。在JavaScript中几乎所有的对象都是通过构造器Constructor函数创建的而这些构造器函数都有一个特殊的属性叫做prototype。这个prototype属性是一个对象它包含了可以由通过该构造器函数创建的所有实例对象共享的方法和属性。总结一下构造函数用来创建对象同一构造函数创建的对象其原型相同。
当你通过一个构造器函数创建一个新对象时这个新对象内部会包含一个指向构造器函数的prototype属性的链接在ES6之前这个链接通常是通过__proto__属性来访问的尽管__proto__并不是一个标准属性而是一个内部属性在大多数环境中的实现方式从ES6开始建议使用Object.getPrototypeOf()和Object.setPrototypeOf()来访问和设置这个链接。
这个机制允许你定义一些通用的方法和属性在构造器的prototype上然后这些方法和属性就可以被所有通过该构造器创建的对象所共享。这是JavaScript实现继承的一种机制尽管它与其他面向对象编程语言中的继承概念有所不同。
举个例子
function Person(name, age) { this.name name; this.age age;
} // 在Person的prototype上添加一个方法
Person.prototype.greet function() { console.log(Hello, my name is ${this.name} and I am ${this.age} years old.);
}; // 创建Person的实例
var person1 new Person(Alice, 30);
var person2 new Person(Bob, 25); // 使用共享在prototype上的方法
person1.greet(); // 输出: Hello, my name is Alice and I am 30 years old.
person2.greet(); // 输出: Hello, my name is Bob and I am 25 years old. // 注意name和age属性不是共享的每个实例都有自己的name和age属性原型链
当访问一个对象的属性时先在对象的本身找找不到就去对象的原型上找如果还是找不到就去对象的原型原型也是对象也有它自己的原型的原型上找如此继续直到找到为止或者查找到最顶层的原型对象中也没有找到就结束查找返回undefined。这条由对象及其原型组成的链就叫做原型链。
1. 原型存在的意义就是组成原型链
2. 原型链存在的意义就是继承
3. 只要是引用类型都有__proto__属性指向其原型。
4. 只有函数有prototype属性指向原型对象。static 关键字定义了静态方法或字段或静态初始化块。静态属性不能在类的实例上直接访问。相反它们是在类本身上被访问的。
在JavaScript中在函数上直接添加属性或方法。这些属性和方法不会通过原型链继承给实例而是直接绑定在构造函数上。
function phone(){
}
phone.name 111;//这里的name添加到构造函数phone上了他并不会传递给xiaoki
let xiaoki new phone();//这里的phone就是构造函数
xiaoki.name //这是错误的无法调用。
xiaoki.constructor.name // 这样可以调用但是不推荐。phone.prototype.name 111// 这里的name添加到原型上了他会传递给xiaoki
let xiaoki new phone();//这里的phone就是构造函数
xiaoki.name //可以调用