像一颗滚石

像一颗滚石 查看完整档案

填写现居城市广西科技大学鹿山学校  |  电气与计算机工程系 编辑  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

像一颗滚石 发布了文章 · 10月19日

JS的new操作符

一、new的使用

当我们定义一个构造函数,用new创建对象时

function Person(){
}

var person = new Person();

console.log(person); // Person{}

会返回一个指向该构造函数原型的对象。

二、new创建对象的过程

根据红宝书的描述分为以下4个步骤:

  1. 创建一个新的对象;
  2. 将构造函数的函数作用域赋给新对象(因此this就指向了这个新对象);
  3. 执行构造函数中的代码(为这个新对象添加属性);
  4. 返回新对象。

三、模拟实现new操作

// newObj接受不定量的参数,第一个参数是一个构造函数
function newObj(fn, ...arg) {
    // 1.新建一个空对象
    var obj = {};
    // 2.将新对象的原型指向构造函数的原型
    obj.__proto__ = fn.prototype;
    // 3.将 fn 的 this 指向 obj
    fn.apply(obj, arg);
    // 4.返回新对象
    return obj;
}

或
function newObj(fn, ...arg) {
    let obj = Object.create(fn.prototype);
    fn.apply(obj, arg);
    return obj;
}

接下来对newObj函数进行测试

function Person(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

// 在Person的原型上添加sayName()方法
Person.prototype.sayName = function() {
    alert(this.firstName + " " + this.lastName);
}

// 使用自定义的newObj创建Person的对象实例
var pitt = newObj(Person, "Bob", "Pitt");
// 调用sayName()
pitt.sayName(); // "Bob Pitt"

//使用new操作符创建实例对象
var sunny = new Person("Bob", "Sunny");
sunny.sayName(); // "Bob Sunny"
查看原文

赞 0 收藏 0 评论 0

像一颗滚石 赞了回答 · 9月8日

解决JS对传递值的数组sort(),原数组也被排序了,原理是什么?怎么复制数组sort()后不影响原数组?

进行对象赋值的时候,赋值的是对象的引用。可以copy一个对象实现。

var numbers = [4, 2, 5, 1, 3],
    n1 = numbers.slice(0),
    n2 = numbers;
n1.sort(function(a, b) {
    return a - b;
});
console.log(numbers,n1,n2);

这里n2和numbers还是一个对象,但n1是另一个对象,只是对象的内容一样而已。

var numbers = [4, 2, 5, 1, 3],
    n1 = numbers.slice(0),
    n2 = numbers;
n2 == numbers //true
n1 == numbers //false

关注 2 回答 6

像一颗滚石 关注了专栏 · 9月3日

前端巅峰

注重前端性能优化和前沿技术,重型跨平台开发,即时通讯技术等。 欢迎关注微信公众号:前端巅峰

关注 16737

像一颗滚石 关注了专栏 · 9月3日

全栈修仙之路

聚焦全栈,专注分享 Angular、TypeScript、Node.js/Java 、Spring 技术栈等全栈干货。 欢迎小伙伴们关注公众号全栈修仙之路,一起升级打怪。

关注 5787

像一颗滚石 关注了专栏 · 9月3日

进击的大前端

分享各种大前端进阶知识! 不打广告,不写水文,只发高质量原创,与君共勉,共同学习~ 公众号:进击的大前端! 更多文章和示例源码请看:https://github.com/dennis-jiang/Front-End-Knowledges

关注 2783

像一颗滚石 关注了专栏 · 9月3日

码农田小齐

一起玩转算法和数据结构呀~ 公众号:码农田小齐

关注 2282

像一颗滚石 关注了用户 · 9月3日

依然饭特稀西 @yiranfantexixi

关注 1277

像一颗滚石 关注了用户 · 9月3日

敖丙 @aobing

关注 3822

像一颗滚石 关注了标签 · 9月3日

java

Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

Java编程语言的风格十分接近 C++ 语言。继承了 C++ 语言面向对象技术的核心,Java舍弃了 C++ 语言中容易引起错误的指針,改以引用取代,同时卸载原 C++ 与原来运算符重载,也卸载多重继承特性,改用接口取代,增加垃圾回收器功能。在 Java SE 1.5 版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对 Java 语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言”。

版本历史

重要版本号版本代号发布日期
JDK 1.01996 年 1 月 23 日
JDK 1.11997 年 2 月 19 日
J2SE 1.2Playground1998 年 12 月 8 日
J2SE 1.3Kestrel2000 年 5 月 8 日
J2SE 1.4Merlin2002 年 2 月 6 日
J2SE 5.0 (1.5.0)Tiger2004 年 9 月 30 日
Java SE 6Mustang2006 年 11 月 11 日
Java SE 7Dolphin2011 年 7 月 28 日
Java SE 8JSR 3372014 年 3 月 18 日
最新发布的稳定版本:
Java Standard Edition 8 Update 11 (1.8.0_11) - (July 15, 2014)
Java Standard Edition 7 Update 65 (1.7.0_65) - (July 15, 2014)

更详细的版本更新查看 J2SE Code NamesJava version history 维基页面

新手帮助

不知道如何开始写你的第一个 Java 程序?查看 Oracle 的 Java 上手文档

在你遇到问题提问之前,可以先在站内搜索一下关键词,看是否已经存在你想提问的内容。

命名规范

Java 程序应遵循以下的 命名规则,以增加可读性,同时降低偶然误差的概率。遵循这些命名规范,可以让别人更容易理解你的代码。

  • 类型名(类,接口,枚举等)应以大写字母开始,同时大写化后续每个单词的首字母。例如:StringThreadLocaland NullPointerException。这就是著名的帕斯卡命名法。
  • 方法名 应该是驼峰式,即以小写字母开头,同时大写化后续每个单词的首字母。例如:indexOfprintStackTraceinterrupt
  • 字段名 同样是驼峰式,和方法名一样。
  • 常量表达式的名称static final 不可变对象)应该全大写,同时用下划线分隔每个单词。例如:YELLOWDO_NOTHING_ON_CLOSE。这个规范也适用于一个枚举类的值。然而,static final 引用的非不可变对象应该是驼峰式。

Hello World

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

编译并调用:

javac -d . HelloWorld.java
java -cp . HelloWorld

Java 的源代码会被编译成可被 Java 命令执行的中间形式(用于 Java 虚拟机的字节代码指令)。

可用的 IDE

学习资源

常见的问题

下面是一些 SegmentFault 上在 Java 方面经常被人问到的问题:

(待补充)

关注 105235

像一颗滚石 关注了标签 · 9月3日

javascript

JavaScript 是一门弱类型的动态脚本语言,支持多种编程范式,包括面向对象和函数式编程,被广泛用于 Web 开发。

一般来说,完整的JavaScript包括以下几个部分:

  • ECMAScript,描述了该语言的语法和基本对象
  • 文档对象模型(DOM),描述处理网页内容的方法和接口
  • 浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口

它的基本特点如下:

  • 是一种解释性脚本语言(代码不进行预编译)。
  • 主要用来向HTML页面添加交互行为。
  • 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。

JavaScript常用来完成以下任务:

  • 嵌入动态文本于HTML页面
  • 对浏览器事件作出响应
  • 读写HTML元素
  • 在数据被提交到服务器之前验证数据
  • 检测访客的浏览器信息

《 Javascript 优点在整个语言中占多大比例?

关注 134833

认证与成就

  • 获得 0 次点赞
  • 获得 2 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 2 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 9月3日
个人主页被 35 人浏览