JS 原型模式创建对象】的更多相关文章

例子: class Test { constructor(val) { this.val = val } walk() { console.log(this) console.log('walk') } stop(){ console.log('stop') } } let vm = new Test('jike') console.log(vm) Test.prototype(就是控制台上的__proto__)指向原型对象,Test.prototype,constructor又指向类Test…
一.仔细分析前面的原型模式创建对象的方法,发现原型模式创建对象,也存在一些问题,如下: 1.它省略了为构造函数传递初始化参数这个环节,结果所有实例在默认的情况下都将取得相同的属性值,这还不是最大的问题! 2.最大的问题是原型中的所有属性是被很多实例所共享的,这种共享对于函数非常合适,对于那些包含基本值的属性也说得过去,因为我们知道可以在实例上添加一个同名属性,可以隐藏原型中的对应属性.但是对于包含应用类型值的属性来说,问题就非常严重了,代码如下: function Person(){ } Per…
function Person(){ } Person.prototype.name = "xd"; Person.prototype.age = 26; Person.prototype.sayName = function(){ alert(this.name); }; var person1 = new Person(); person1.sayName();//"xd" var person2 = new Person(); person2.sayName(…
文章地址: https://www.cnblogs.com/sandraryan/ 创建对象 创建对象的三种方式 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象 1. 调用系统的构造函数创建对象(又称为实例化一个对象) var obj = new Object(); // 添加属性,方法 obj.name = 'jack'; obj.age = 20; obj.eat = function(){ //匿名函数 console.log('hi'); } // 调用属性/方法 cons…
创建一个对象,先来看一段代码: // 例如创建一个 Person 的构造函数, 让人有名字, 可以说话 function Person ( name ) { this.name = name; // 可以说话, 需要有一个方法 this.sayHello = function () { console.log( '你好, 我是 ' + this.name ); }; } var p1 = new Person( '小明' ); var p2 = new Person( '大伟' ); conso…
function SuperType() { this.property = true; //原型属性 } //基类方法 SuperType.prototype.getSuperValue = function() { return this.property; } function SubType() { this.subproperty = false; //子类属性 } //继承SuperType SubType.prototype = new SuperType(); //定义子类方法…
/* *对象方法 *类方法 * 原型方法 */ function People(name) { this.name = name; this.say = function () { //对象方法 alert("my name is "+this.name); } } People.run = function () { //类方法(静态方法,只能由类名调用) alert("i can run"); } People.prototype.sayChinese = fu…
var proto = ""; function Person(name, age, job) { this.name = name; this.age = age; this.job = job; if (typeof this.sayname != 'function') { //这里不能使用字面量创建原型对象 //Person.prototype.sayname = function() { // console.log("name = " + this.na…
一.js面向对象程序 var o1 = new Object();     o1.name = "宾宾";     o1.sex = "男";     o1.age = "27"; o1.msg = function(){     console.log("姓名:"+this.name+"  性别:"+this.sex+"  年龄:"+this.age); }   var o2 = ne…
传统的面向对象语言中,创建一个对象是通过使用类来创建一个对象的,比如通过类飞行器来创建一个对象,飞机. 而js这种没有类概念的动态设计语言中,创建对象是通过函数来创建的,所以通常也把js称为函数式语言,创建对象除了使用声明方法 var a = {} | function(){} | string | base type;还可以使用原型模式来创建对象 比如我们有了有个对象飞机,在一款打飞机游戏中,我们吃了一个奖励包,可以分身出一架飞机,按传统模式,我们先要使用飞行器类创建一个飞机实例,然后把飞机当…