原型

作者: 浮巷旧人 | 来源:发表于2018-08-01 21:27 被阅读0次

原型

1.定义:原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。

Person.prototype --原型
Person.prototype = {} 是祖先
Person.prototype.name = "Deng";
function Person() {

}
var person = new Person();
var person1 = new Person();

Car.prototype.height = 1400;
Car.prototype.lang = 4900;
Car.prototype.carName = 'BMW';
function Car(color,owner) {
this.owner = owner;
this.color = color;
}
var car = new Car('red', 'prof.ji');
var car1 = new Car('green', 'laodeng');
通过后代例如car是不能改变原型的属性
car如果没有某个属性 会去祖先里找

  • 写法也可以聚在一起写
    Car.prototype = {
    height : 1400,
    lang : 4900,
    carName : 'BMW'
    }

car.constructor 构造器的意思
=> function Car () {
}
如果 Car.prototype = {
constructor : person
} 那么就会改变构造器的值

Person.prototype.name = 'abc';
function  Person() {
//  var this = {
// 
// __proto__:Person.prototype
//}
var obj = {
    name:'sunny'
}
var person = new Person ();
person.__proto__ = obj;
 
proto是指向对象原型的,会去原型里找 ,但是这
里把原型改了,指向了obj.
Person.prototype.name = 'sunny';
function  Person() {
/ var this = { __proto__:Person.prototype}
}
var person = new Person();
1)如果加上这句Person.prototype.name = 'cherry'
这里只是相当于把房间里的内容改了,最后person.name='cherry'
2)如果Person.prototype = {name:'cherry'},这里
想让于加了个房间 换了个人  所以 person.name = 'sunny' 
/以上两种情况仅限于仅限于在 new执行之后
3)
function  Person() {
/  var this = { __proto__:Person.prototype}
}
Person.prototype.name = 'sunny';
Person.prototype = {
         name : 'cherry‘
}
var person = new Person();
这种情况是new没生成之前下面的把上面覆盖了 所
以最后person.name = 'cherry'.
  • 构造函数只要new执行 ,必默认生成var this = {__proto __ :函数名.prototype}
  • 绝大多数对象的最终都会继承自Object.prototype
Grand.prototype.__proto__ = Object.prototype
 Object.prototype.__proto__ = null
Grand.prototype.lastName = 'Deng';
function  Grand() {
}
var   grand = new Grand();
Father.prototype = grand;
function Father() {
        this.name = 'xuming';
        this.forture = {
            card : 'visa'
        };
        this.num = 100;
}
var  father =    new Father();

Son.prototype = father;
function Son() {
          this.hobbit = "smoke";
}
var  son = new Son();
eg: son.forture = 200 father无影响
  son.forture.card1 = "master"  father 自动加上了

son.num ++(=son.num+1); return100
father.num = 100 
son.num = 101
Person.prototype = {
       name : "a",
       sayName : function () {
             console.log(this.name);
     }
}
function  Person() {
         this.name = "b"
}
var person = new Person();
sayName里面的this指向谁,谁调用的方法,this就是谁
person.sayName()   => b
Person.prototype.sayName()  =>a

var obj = {}; 相当于 系统内部自动 new Object();
- var  obj = Object.create(原型); 

var  obj = {name : "sunny", age :123};
var   obj1 = Object.create(obj);
所以obj1的原型就是obj  obj1.name = 'sunny'

Person.prototype.name = "sunny";
function  Person() {
          
}
var person = Object.create(Person.prototype);

Object.create( );里面只能是 object or null
undefined.to string() null.to string()是报错的 不存在的

var num = 123;
//num.toString(); --> new Number (num).toString();
Number.prototype.toString = function () {
}这种方法叫重写 实现同名但不同功能的东西,number里有tostring这个功能 就不会去上级object里面去找了
//Number.prototype._proto _ = Object.prototype
// Object.prototype.toString = function(){
}

eg:
// Object.prototype.toString = function(){
// } 系统自带的方法
Person.prototype = {
toString : function () {
return 'hehe';
}
}
function Person() {

}
var person = new Person ():

Object.prototype.toString.call(123)
"[object Number]"
Object.prototype.toString.call(true)
"[object Boolean]"返回的是类型

var obj = Object.create(null);
obj.toString = function () {
    return "老邓身体好";
}
document.write(obj);
隐式的调用toString方法  如果不是人为的加上
obj.toString = function () {
    return "老邓身体好";
} 就会报错

Math.ceil(123.234) -->124
Math.floor(123.234) -->123
Math.random( ) 产生一个0~1之间的随机数

for(var i = 0; i<10; i++){
     var num = Math.floor(Math.random() * 100)
      console.log(num);
}随机一个数取0~100

相关文章

  • JavaScript 原型、原型链与原型继承

    原型,原型链与原型继承 用自己的方式理解原型,原型链和原型继承 javascript——原型与原型链 JavaSc...

  • JavaScript 原型和原型链

    原型 在 JavaScript 中,我们所称的原型有两个使用语境: 原型关系 原型属性 原型关系指对象的原型对象,...

  • JavaScript 原型和原型链

    原型 在 JavaScript 中,我们所称的原型有两个使用语境: 原型关系 原型属性 原型关系指对象的原型对象,...

  • 原型、原型链

    (什么是原型、原型链?有什么作用) JavaScirpt深入之从原型到原型链 图解 Javascript 原型链 ...

  • 关于原型原型链的理解

    什么是原型? 什么是原型链? 为什么需要原型,和原型链?

  • js的原型对象&原型链&js的继承

    原型对象 & 原型链 原型对象分2种:显式原型和隐式原型。 显式原型就是我们常用的prototype属性,是函数的...

  • 4.4 JavaScript

    4.4.1. 原型链 4.4.1.1. 显式原型和隐式原型   JavaScript的原型分为显式原型(expli...

  • 原型、原型链

    理解JavaScript原型 彻底理解JavaScript原型 原型 原型是一个对象,所有对象都可以成为原型,其...

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

  • 2-6 原型和原型链 - 5个原型规则

    2-6 原型和原型链 - 5个原型规则 5条原型规则,原型规则是学习原型链的基础。 第一、所有引用类型(数组、函数...

网友评论

      本文标题:原型

      本文链接:https://www.haomeiwen.com/subject/cvqdvftx.html