javascript - 原型问题继承

查看:112
本文介绍了javascript - 原型问题继承的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var obj = function(){
     this.name=12;
     this.get="年龄";
     this.age=new Date();
  }
     Object.defineProperties(obj,{tilt:{
     value:66,
     configurable:true,
     wirtable:true,
     enumerable:false
     },z:{
      value:11,
      configurable:false,
      writable:false,
      enumerable:false
     }})
     obj.prototype={
      add:12,
      sb:16
     }   //这个跟上面defineProperties都是添加属性,有什么区别?

     var obj1 = new obj()
    //1.obj是原型吗?
    // 2.为什么 obj1不能访问definProperties创建的属性, 返回的是undefined,
    //用obj,就能访问这些属性了
    // 3.obj1 = new obj(); 这是叫obj1继承了obj的属性吗?
    // 4.什么叫继承?什么叫原型啊?对原型这块,蒙圈了
    //在此感谢回答的朋友们!!!

解决方案

Object.defineProperties可定限制屬性的編修等等..

1.obj.prototype才是原型
2.因為obj1的原型指obj.prototype,所以在obj向身上找不到add,是去obj.prototype找,而不是obj
3.這叫obj實例化創建obj1,js預設obj1的原型會指向obj.prototype,所以在obj1上找不到的屬性會去obj1上找
4.仔細看看樓上連結的內容吧...

原型

function Person(name) {
  this.name = name;
}

Person.prototype.age = 20;

var john = new Person('john');

//經由john的原型,得到屬性
console.log(john.age);

因為有原型,才能做到繼承

function Person() {
  this.age = 20;
  this.setName = function(name) {
    this.name = name;
  };
}

function Studen(major) {
  this.major = major;
}

//修改Studen的原型,始其繼承Person的屬性
Studen.prototype = new Person();

var john = new Studen('IT');

console.log(john.age);

john.setName('john');

console.log(john.name);

这篇关于javascript - 原型问题继承的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆