JavaScript的一些知识碎片(1)
打算把使用Javascript的水平从child提升到小学毕业,近期会持续记录一些知识点。
javascript的引用机制:只要一个对象赋值为另一个对象,就建立了引用。一旦建立了引用,对象们就公用一块空间。可以看下面一段代码:
var stooge={
nickname:"Maria"
}
var x = stooge;
console.log(stooge.nickname); //Maria x.nickname = 'Curly';
x.realname ="Thomas" console.log(stooge.realname);//Thomas 由x添加的realname属性。 var nick = stooge.nickname; console.log(nick); //显然是Curly console.log(stooge.nickname);//被覆盖为 Curly
javaScript里没有很强的class概念,也没有class和instance的区分。new关键字的用处和java类似,也是创建一个新的对象。但是js中的对象不是只有new才能创建,多种创建方式,例如function这种类型的对象,就可以通过显式声明,赋值给变量,或者调用Function构造函数来构建。
javascript的Prototype:每个对象都有一个prototype,并且从中继承属性。所有对象都继承Object.prototype的属性。创建新对象时可以选择某个对象作为prototype,这样就可以直接继承它的属性了。这里是新开辟一块儿内存空间,而不是引用。通过下面的代码,我们可以方便的让一个对象继承另一个对象的prototype
if(typeof Object.inherit !== 'function'){
Object.inherit = function(obj){
var fun = function(){};
fun.prototype = obj;
return new fun();
};
} var lucasliu={
job:"tester",
hobby:"reading"
} var a=Object.inherit(lucasliu); //“继承“,实际上是copy出了所有属性
console.log(a.job);// tester 继承自lucasliu
a.job = 'doctor';
console.log(a.job);//doctor 值被覆盖为doctor
console.log(lucasliu.job);//tester,lucasliu不受影响 lucasliu.newskill="play piano"; console.log(a.newskill); //play piano a跟着prototype获得了新技能。
prototype的属性可以被继承者的同名类型覆盖。通过delete关键字可以清除覆盖。
JavaScript的一些知识碎片(1)的更多相关文章
- JavaScript的一些知识碎片(2)-反射-全局变量-回调
JavaScript中的反射:编程语言中的反射原理都一样,就是通过操作metadata(描述语言的语言)来完成一些不具备反射功能的语言很难实现的功能.在静态语言中,反射是一个高大上的东西,比如在运行时 ...
- IOS开发基础知识碎片-导航
1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...
- 快速掌握JavaScript面试基础知识(三)
译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...
- 快速掌握JavaScript面试基础知识(二)
译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...
- JavaScript 面向对象开发知识基础总结
JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精 ...
- JavaScript的高级知识---词法分析
JavaScript的高级知识---词法分析 词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 函数在运行的瞬间, ...
- javascript的基础知识及面向对象和原型属性
自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; cons ...
- 发发关于JavaScript的感慨,随手记几个js知识碎片
最近一段时间写了很多JavaScript和jquery代码,越来越感觉js基础不牢固,写一句查半天,有时间肯定要系统的学一下. 不说了,先记一下最近学到的点东西,省的以后没时间系统学js还要再来查. ...
- 【知识碎片】JavaScript篇
40.选择器组合 逗号是多选择器空格 是子子孙孙尖括号 只找儿子 39.失去焦点事件blur $("input").blur(function(){ $("input& ...
随机推荐
- iOS开发进阶
<iOS开发进阶>基本信息作者: 唐巧 出版社:电子工业出版社ISBN:9787121247453上架时间:2014-12-26出版日期:2015 年1月开本:16开页码:268版次:1- ...
- pentaho cde 画图参数介绍
初步接触pentaho,由于在国内的资料很少,唯有看英文文档,做了N次反复尝试,挖掘了pentaho CDE中画图的一些基本参数. 下面就列出来了一些常用参数介绍: crosstabMode:表明如果 ...
- 数据处理/OLAP/OLTP
- 继续说一下openjson 以及 json path 的使用 (2)
在openjson 里面,其实是可以把数据类型array里面的值遍历出来的,举个栗子 ) = N' {"name":"test", "obj" ...
- LeetCode#227.Basic Calculator II
题目 Implement a basic calculator to evaluate a simple expression string. The expression string contai ...
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
链表排序讲解: head指针指向链表的头结点,是找到整个链表的唯一依据,如果head指针丢失,整个链表就找不到了. head存储的是第一个节点的地址,head->next存储的是第二个节点的地址 ...
- Linux nm命令
一.简介 显示关于对象文件.可执行文件以及对象文件库里的符号信息. 二.选项 http://www.cnblogs.com/wangkangluo1/archive/2012/07/02/257243 ...
- vsftpd 配置:chroot_local_user与chroot_list_enable详解
chroot_local_user,chroot_list_enable,chroot_list_file三个配置项的解释: chroot_local_user #是否将所有用户限制在主目录,YES为 ...
- 在报表中给session赋值实现报表间参数共享
1. 问题描述 在报表开发工具FineReport中,若有几张不同的报表,每张报表都有一个共同的项可以选择,比如日期时间.我们希望选择了第一张报表的时间之后,其他报表的默认时间都变为第一张报表选择的时 ...
- USB hacker Collection
This blog contains some ideas and tricks about USB hacking.