谈到面向对象,我们之前学过Vb和C#,从抽象到封装再到继承和多态,面向对象的世界真的很好玩,但是JavaScript中的面向对象有些特殊,因为里面没有类,而且对象的创建方式也不同。 对象的创建大约有四种方式:使用new关键字创建、使用字面量创建、使用工厂方法创建、使用构造函数创建。 1、使用new关键字var box = new Object(); //创建一个 Object 对象 box.name = 'Lee'; //创建一个 name 属性并赋值 box.age = 100; //...
上一讲我们提出一个很好的思路,将一个类的可复用部分全部定义在prototype中,这样子类继承的时候可以很方便地通过prototype来继承;但是也带来一个问题就是子类在重写prototype中的属性时会改变所有实例的属性,这是因为父类和子类实例都共享同一个prototype;怎么解决呢?思路就是利用一个中间函数,具体请看代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra...
2. 完善地图 我们的地图中有空地,墙,钢,草丛,水,总部等障碍物。 我们可以把这些全部设计为对象。2.1 创建障碍物对象群 对象群保存各种地图上的对象,我们通过对象的属性来判断对象是否可以被穿过或被攻击。 Barrier.js: 1// 障碍物基类对象,继承自TankObject 2 Barrier = function () {3this.DefenVal = 1; // 防御力 4this.CanBeAttacked = true; // 是否可以被攻击 5}6 Barrier.prototype = new TankObject(...
使用JSON 来定义一个对象: <script type="text/javascript">var xiaoming = { name : ‘xiaoming‘, age : 18, say : function(){ console.log(‘my name is ‘+this.name); }}xiaoming.say();xiaoming.name = ‘li xiao ming‘;xiaoming.say();</script> 原文:http://www.cnblogs.com/likewpp/p/6935684.html
/* //工厂模式 function createObject(name,age){var obj = new Object();//新建一个对象obj.name=name;//新建对象的属性obj.age=age;obj.run=function(){//新建对象的方法return this.name+","+this.age+"...running.";}return obj;//返回新建的对象引用 }var box1 = createObject("Carl",20); var box2 = createObject("Zhang",25); alert(box1.run()); alert(box2.run());//构造函数 function Box(name,age){this.name=name;//新...
1,ECMAScript不像其他面向对象的语言那样有类的概念,它的对象与其他不同。2,ECMAScript有两种属性:数据属性和访问器属性。([[]]这种双中括号表示属性为内部属性,外部不可直接访问) 1.数据属性:[[ Configurable ]]:表示能否通过delete删除属性,能否修改属性的特性,能否将属性修改为访问器属性,默认为true。 [[ Enumerable ]]:表示能否通过for-in循环返回属性,默认为true。 [[ Writable ]]:表示能...
JavaScript面向对象是近年来比较火的一个概念了,由于小弟才疏学浅,虽然做过不少的web项目,看了网上很多深奥的资料和教程,还是对他们深奥 的理论一知半解,前段时间看了点书,总算有了自己的理解,今天也出来装一回,如果觉得很深奥,请直接鄙视我,如果觉得不对,请直接拍砖。先通俗了解下面一些东西。在JS代码中写入function fn(){}或者var fn=function(){}等等,你都可以将其理解为对象,当然还有数组等等。在理解面向对象...
废话不多说,代码如下: 1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset="UTF-8">5 <title>贪吃蛇</title>6 <script>7var map; //地图类对象 8var snake; //蛇类对象 9var food; //食物类对象 10var timer; //定时器对象 11var sum=0; //分数 12 13//地图类 14function Map()15 {16this.width=800; //地图宽度 17this.height=400; //地图高度 18this.position=‘absolute‘; //定位方式 19this.color=‘#cccccc‘; //地图...
JavaScript对象及初识面向对象: 原文:http://www.cnblogs.com/s1297-lgy/p/7060692.html
哈哈,面向对象的创建居然学了这么久,不废话。首先是创建面向的对象的方式。最常用的构造函数和原型模式混合。对于方法使用原型模式,对于属性使用构造函数的方式。。为什么要组合这两种方式呢,是因为通过原型模式创建引用类型的值的时候。创建实例时这个引用类型的值更改,会影响到其他实例。继承,es5使用原型链来继承。继承是通过创建一个对象的实例,并赋给另一个对象的prototype实现的。结果是原来存在于实例中的所有方法和...
js面向对象的特点:继承(inheritance):对象方法和属性的继承多态(polymorphism):组件开发抽象(abstract):抓住核心问题封装(encapsulation):把功能写出方法面向过程式切换面板实现:<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>切换面板</title><style>#div1 input {background: white;}#div1 input.active {background: yellow;}#div1 div {width: 200px;height: 200px;background: #CCC;display: none;}</style...
/*JavaScript和其他的语言类似,也是面向对象,自然也就是存在类和对象(对象是类的实例化)*///1、JS对象var empty = {}; //没有任何属性的对象var point = { x: 0, y: 0 }; //两个属性和值var point2 = { x: point.x, y: point.y } //复杂的属性和值var book = {"main title": "javascript", //属性名字中有空格,必须用字符串表示"sub-title": "The Definitive Guide", //属性名字里有连字符,必须用字...
简单的来说就是键值对,写一个函数,然后传值进去, function Person(name,age){ this.name = name; this.age = age; } var p1 = new Person(‘Jack‘,20); console.log(p1.__proto__);原文:http://www.cnblogs.com/ZH1132672711/p/4098339.html
阅读目录一:理解构造函数原型(prototype)机制二:理解原型域链的概念三:理解原型继承机制四:理解使用类继承(继承的更好的方案)五:建议使用封装类实现继承六:理解使用复制继承回到顶部一:理解构造函数原型(prototype)机制 prototype是javascript实现与管理继承的一种机制,也是面向对象的设计思想.构造函数的原型存储着引用对象的一个指针,该指针指向与一个原型对象,对象内部存储着函数的原始属性和方法;我们可以借助pr...
1. 1// Function.prototype.bind() 的作用 2 3// 1.Creating a bound function 4this.x = 9; 5var module = {6 x: 81,7 getX: function() { returnthis.x; }8 };9 10 console.log(module.getX()); // 81 11 12var retrieveX = module.getX;13 console.log(retrieveX()); 14// 9, because in this case, "this" refers 15// to the global object 16 17// Create a new function with ‘this‘ bound to ...