方式一: Object构造函数模式套路: 先创建空Object对象, 再动态添加属性/方法适用场景: 起始时不确定对象内部数据问题: 语句太多 var p = new Object()//先创建空Object对象p.name = ‘Tom‘p.age = 12p.setName = function (name) {this.name = name} 方式二: 对象字面量模式套路: 使用{}创建对象, 同时指定属性/方法适用场景: 起始时对象内部数据是确定的问题: 如果创建多个对象, 有重复代码 var p = {name: ‘Tom‘,age: 12,set...
构造函数方式:a. 代码: var myClass = function(name){ this.name = name } myClass.prototype.sex = "male" var myClass = new myClass(‘lee‘) myClass.sex = "female" console.log(myClass.name) console.log(myClass.sex)b. 输出:lee female工厂函数方式(推荐):a. 代码: var myFactory = function(name){ return {name:name } } myFactory.prototype.sex = "male" var myFactory = new myFactory(‘lee‘) myFactory.s...
js的函数也是对象,其创建有三种方式:函数声明、函数表达式、函数构造器。 上图中,左边为函数声明,右边为函数表达式。 上图的要点为:函数声明和变量声明会前置,函数表达式不会前置。 上图的要点为:1.可通过构造器直接新建函数,new可以省略。2.Function前面的入参为函数入参,最后一个参数为函数体。 上图的要点为:函数中的变量存在在自己的作用域中,不可跨函数调用。 上图的要点为:1.函数表达式和函数构造器允许匿名,且...
面向对象(Object-Oriented, OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。而 ECMAScript 中没有类的概念,所以我们可以使用对象模拟出类。ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数。”严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。 以下是《JavaScript高级...
手工创建tomcat应用:1、在webapps下面新建应用目录文件夹2、在文件夹下创建或是从其他应用中复制:META-INF,WEB-INF这两个文件夹,其中META-INF清空里面,WEB-INF里面只保留web.xml,并清空webapp标签内全部内容因为tomcat应用必须要有这步的东西,而且格式还要一致3、现在可任意加网页文件或js,css文件,只要查对地址正确即可访问。 js读取本地文件内容:只有在服务端才可以读取本地内容,client方式无法获取。$.get("文件名.扩...
一些写类工具函数或框架的写类方式本质上都是 构造函数+原型。只有理解这一点才能真正明白如何用JavaScript写出面向对象的代码,或者说组织代码的方式使用面向对象方式。当然用JS也可写出函数式的代码,它是多泛型的。 为了讨论的单一性,暂不考虑类的继承,(私有,受保护)属性或方法。EMCAScript中实际没有类(class)的概念,但可以把它理解为更广义的概念。 1、构造函数方式/** * Person类:定义一个人,有个属性name,和一个getN...
深入理解JavaScript中创建对象模式的演变(原型) 创建对象的模式多种多样,但是各种模式又有怎样的利弊呢?有没有一种最为完美的模式呢?下面我将就以下几个方面来分析创建对象的几种模式:Object构造函数和对象字面量方法工厂模式自定义构造函数模式原型模式组合使用自定义构造函数模式和原型模式动态原型模式、寄生构造函数模式、稳妥构造函数模式第一部分:Object构造函数和对象字面量方法 我之前在博文《javascript中对...
之前我已经有讲过后台返回json数据到前台,并在前台遍历json数据。这里讲下直接在JS里创建JSON数据,然后遍历使用~创建代码如下:(创建的是JSON对象) var YearSelect = {};var Year = 2014;var DateOption;for (var i = Year; i < Year + 12; i++) {DateOption = {'Year':i, 'Month':i-Year+1}; // alert(DateOption.Year)YearSelect[i] = DateOption;} 这里是创建一个JSON对象,包括了年份和月份的数据。 我为什么创建JSON对象...
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子:var sayHello = function() { return ‘Hello var‘;};function sayHello(name) { return ‘Hello function‘;};sayHello(); 最终的输出为> "Hello var" 为什么会这样,根据 StackOverFlow 的解释,实际上JavaScript的是按如下顺序解析的。function sayHello(name) { return ‘Hello function‘;};var s...
大致步骤:1、写一个p标签,指定一个id选择器,输入数字!2、写一个input标签,指定type属性的属性值为button,创建一个按钮,加入onclick事件!3、为p标签和input标签指定相关的CSS样式(可以省略)4、用js创建一个自加的函数,在函数中用document对象的getElementById()方法,选中p标签。5、通过innerHTML获取p标签的内容,实现自加!! 实现代码如下:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>自加<...
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title></head> <body> <div id = "mountains"></div><script>let MOUNTAINS = [{name: "Kilimanjaro", height: 5895, place: "Tanzania"},{name: "Everest", height: 8848, place: "Nepal"},{name: "Mount Fuji", height: 3776, place: "Japan"},{name: "Vaalserberg", height: 323, place: "Netherlands"},{name: "Denali", height: 6168, place: "U...
这又是一个新的开始,对象的重要性不言而喻。在JavaScript中创建对象是十分容易的,之前聊过的对象字面量和构造函数都可以达到目的。但是本篇中,我们越过那些方法,以寻求一些额外的对象创建模式。 本篇内容,我们将学到命名空间(namespace),依赖声明(dependency declaration)、模块模式(module pattern)、沙箱模式(sandbox pattern)。它们都可以帮助您组织应用程序代码的结构,并且降低隐含的全局变量带来的后果。其...
1.第一种创建对象的方式:先定义类再创建对象 // 第一种创建对象的方式:先定义类再创建对象 function stu(sno, name, age){ this.sno = sno; this.name = name; this.age = age; this.study = function(){ alert("学号为"+this.sno+"的学生,姓名叫做"+this.name+",正在努力学习,年龄为"+this.age); } } var a = new stu(1,‘wang‘,23); a.study(); 2.第二种创建对象的方...
前面我们一共介绍了四种方法用来封装对象(工厂,构造模式,原型模式,构造+原型),并且重点对构造函数+原型模式做了一些改进,使之更加完美,那么除了这几种方法, 还有两种方式用来封装对象,还是那句话,选择适合自己的(其实每种方法都各有利弊,在我刚开始学习时总感觉就是拆东墙补西墙)。首先来看第一种方法function Person(name,age){var o=new Object();o.name=name;o.age=age;o.sayName=function(){console.log(this.na...
基于组合与动态原型创建对象 方法一:在外部设置prototype<script type="text/javascript">/** * 为了解决原型所带来的问题,此处需要通过组合构造函数和原型来实现对象的创建 * 将属性在构造函数中定义,将方法在原型中定义 * 这种有效集合了两者的优点,是目前最为常用的一种方式 */ function Person(name,age,friends){ //属性在构造函数中定义 this.name = name; this.age = age; this.friends...