// js 6种数据类型:字符串、数值、布尔值、undefined、null、object
// 三种非数字的数字类型:Infinity -Infinity NaN
var str = "Hello,world" //string
var i = 10 //number
var f = 2.3 //number
var b = true //boolean
var leftShift = 1 << 2
// 一些容易忘记的东西
// 1.string 是可以用 < > 比较的
var str1 = 'hello'
var str2 = 'world'
// 2. == 会进行类型转换后在比较 ,=== 相当于 equals
// null == underfined underfined派生自null 所以类型转换后 比较为true
// null === underfined false null相当于程序级别,underfined相当于系统级别
// 3.优先级怪像
// 13 + !0 = 14 "13" + !0 = "13true"
// 常用的工具
// "This is a string".charAt(0)
// "Hello world".substring(0,5) Hello
// "Hello".length
// 真值就是除了假值 false null underfined NaN "" 0
// 数组是可变的
var myArray = ["Hello",45,true]
myArray.push(null)
// KV无序集合
// 如果呢 key 本身是 identifier 那就不需要引号来引了
var myObj = {key1:'Hello',key2:'World'}
// 任何情况都建议使用 [] 访问属性
var key = myObj['key1']
// 利用短路原则可以做出 default 值效果
var othername = null //意思一下给个 程序级别的null值
var name = othername || 'default' ;
// 一种情况下省略 分号 是不好的,就是 return 语句
// return 语句将被自动插上 ; 导致返回 underfined
// Node 和 browser 提供了工具
// setTimeout() 异步 = 消息 = 通讯
// 同步 = 事件 = 计算
// 灰常重要的作用域问题,javascript 函数是有作用域但是 {} 不代表有作用域
// 这意味着 在 {} 里面声明局部变量,在 {} 外部可以访问 【只有函数作用域】
// 【立即执行匿名函数模式】防止局部变量扩散到全局作用域
(function(){
var temp = 5;
global.permanent = 10;
})()
// 【闭包】内部函数有访问外部函数变量的能力
var foo = (function(){
var password;
return {
getPassword:function(){
return password;
},
setPassword:function(value){
password = value;
}
};
}());
foo.setPassword('123456')
// this 可以访问 对象上下文【绑定的 key】
// 离开这个对象上下文 把函数暴露出去,相当于函数被扔出去了
// 所以 无法访问 得到就是系统级别的 underfined
// 换种思路 那么只要在这个 对象上下文 就可以访问了
var myObj = {
 
myFunc: function(){
return this.myString;
},
myString: "Hello world!",
};
// myObj.myFunc(); // = "Hello world!"
// 【只要在对象上下文】 我们写个函数用this就能访问到了
var myOtherFunc = function(){
return this.myString.toUpperCase();
}
// ①
myObj.myOtherFunc = myOtherFunc
// 甚至【指定对象上下文】 apply和call区别就是形参不一样
// 这样就有三种方式不在定义里面 实现访问对象绑定的key了。
// ②、③
myOtherFunc.call(myObj, " And Hello Moon!");
myOtherFunc.apply(myObj, [" And Hello Sun!"]);
// 【借助指定对象上下文】 apply 也是一个强大的工具
// 这种情况 Math.min 没办法接受一个 Array
var minVal = Math.min.apply(Math,[43,2,78])
// 【直接绑定到对象上下文】
// 赋值给变量 实现可重用
var okFunc = myOtherFunc.bind(myObj)
// 柯里化 curry?直观上是把函数(模板)其中部分形参 固定成常量
// 就有了一个新的函数?【bind也是要传入一个对象上下文】
var product = function(a,b){return a*b }
var doubler = product.bind(this,2) // function(b){b*2}
// new 关键字 对应【构造函数】
var MyConstructor = function(){
this.myNumber = 5;
}
var myNewObj = new MyConstructor() //{myNumber:5}
// ========【原型】========
// 每一个js对象都有一个原型
// 在访问没有定义属性的对象,解释器会去寻找对象原型
// __proto__ 是唯一能够直接修改原型影响到所有对象的方法
// 间接的标准方法有两种
// ① 通用 使用构造函数的属性 prototype (仍然是动态的)
MyConstructor.prototype = {
myNumber:5,
getMyNumber:function(){
return this.myNumber;
}
};
// ② ES5还是ES6 因为有ES3这个东西 以下是新的
// var yourObj = Object.create(原型) (并没有深拷贝)
// 【利用原型可以给基本类型添加方法】
// String是string的包装类型 Number是number的包装类型
// ===强比较会去比较基本类型和引用类型 所以两者强比较会是false
String.prototype.firstCharacter = function(){
return this.charAt(0)
}
// 通过这种方法可以让老浏览器也能用上Object.create
if (Object.create === undefined){
Object.create = function(proto){
var Constructor = function(){}
Constructor.prototype = proto
return new Constructor()
}
}
 
学习的话 从这里开始,安装node环境,控制台打印就可以了
…………………………………………………………………………………………………………………………………………………………………………………………………………

console.log("abc".firstCharacter())

function SuperType(){
this.property = true;
}
SuperType.prototype.getSuperValue = function(){
return this.property;
}
function SubType(){
this.subproperty = false;
}
SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function(){
return this.subproperty;
}
var instance = new SubType();
instance.getSuperValue(); // true

快速学习 javascript的更多相关文章

  1. 十大免费教程资源帮助新手快速学习JavaScript

    “JavaScript”的名头相信大家肯定是耳熟能详,但只有一小部分人群了解它的使用与应用程序构建方式.这“一小部分”人指的当然是技术过硬的有为青年.网络程序员以及IT专业人员.但对于一位新手或者说外 ...

  2. 零基础:如何快速学习JavaScript,html+css技术

    前端开发要学的知识内容涉及的会很宽泛,虽然说主要是HTML.CSS和JavaScript这些基础知识点,但达妹今天想强调一下,学前端开发除了要学这些基础知识外,学员还要在这之上进行延伸和深入的去学,而 ...

  3. 快速学习JavaScript面向对象编程

    到处都是属性.方法,代码极其难懂,天哪,我的程序员,你究竟在做什么?仔细看看这篇指南,让我们一起写出优雅的面向对象的JavaScript代码吧! 作为一个开发者,能否写出优雅的代码对于你的职业生涯至关 ...

  4. 快速学习javascript对象-遍历对象

    为了方便了解每个javascript对象包含的方法,我写一个函数. function GetCollection(obj){ try{ if(obj){ var sType=""; ...

  5. 如何快速检查js语法学习Javascript

    这里给大家推荐一个快速进行语法检查的方法,可以发现绝大多数语法错误,也可以作为在线编辑器,提高编程效率. 地址:http://www.jslint.com/ 同时推荐一个在线学习Javascript的 ...

  6. 如何从源码中学习javascript

    艾伦说啊,学习javascript,必须要学会看源码,通过高手的源码,你可以从中吸取很多书本上难以看到的技巧. 看源码就好像喝鸡汤,所有的营养都在这汤里了.这汤就是源码,高手写的源码,就是最好的鸡汤. ...

  7. 更快学习 JavaScript 的 6 个思维技巧

    更快学习 JavaScript 的 6 个思维技巧 我们在学习JavaScript,或其他任何编码技能的时候,往往是因为这些拦路虎而裹足不前: 有些概念可能会造成混淆,尤其当你是从其他语言转过来的时候 ...

  8. 如何正确学习JavaScript

    不要这样学习JavaScript 不要一开始就埋头在成堆的JavaScript在线教程里 ,这是最糟糕的学习方法.或许在看过无数个教程后会有点成效,但这样不分层次结构地学习一个东西实在是十分低效,在实 ...

  9. 「译」如何正确学习JavaScript

    原文:How to Learn JavaScript Properly 目录 不要这样学习JavaScript 本课程资源 1-2周(简介,数据类型,表达式和操作符) 3~4周(对象,数组,函数,DO ...

随机推荐

  1. centos7下mysql半同步复制原理安装测试详解

    原理简介: 在MySQL5.5之前,MySQL的复制其实都是异步复制(见下图),主库和从库的数据之间存在一定的延迟,这样存在一个隐患:当在主库上写入一个事务并提交成功,而从库尚未得到主库推送的BinL ...

  2. squid详解(正向代理、透明代理、反向代理)

    squid http://www.squid-cache.org/ --官方网址 squid软件主要有两大应用:1,代理上网(正向代理,透明代理) 2,网站静态页面缓存加速(反向代理) 三种代理类型: ...

  3. spring boot集成ehcache 2.x 用于hibernate二级缓存

    https://www.jianshu.com/p/87b2c309b776 本文将介绍如何在spring boot中集成ehcache作为hibernate的二级缓存.各个框架版本如下 spring ...

  4. python中深拷贝和浅拷贝

    python中所谓浅拷贝就是对引用的拷贝,所谓深拷贝就是对对象的资源的拷贝. 首先,对赋值操作我们要有以下认识: 赋值是将一个对象的地址赋值给一个变量,让变量指向该地址( 旧瓶装旧酒 ). 修改不可变 ...

  5. centos7安装saltstack

    环境是Cenos7 saltstack-master:192.168.0.140 saltstack-minion:192.168.0.141 安装epel yum源 yum -y install e ...

  6. pandas 读取excel文件对数据简单清洗并用matplotlib 将数据展示

    首先我们看下数据 接下来数据分析操作 import numpy as np import pandas as pd from matplotlib import pyplot as plt if __ ...

  7. TestNg 7.依赖测试

    我本个测试方法执行的时候,依赖于其他的方法.用到关键字dependsOnmethods(依赖于那个方法)也有依赖于哪个组(dependsOnGroups). 看以下的一段代码: package com ...

  8. Vector使用测试

    1.测试vector是否自动释放分配的空间 vector有大致两类申请空间的方式,一是vector(n,T()),一是vector(p,p+n)(p是自己申请的空间的指针). 其中第一种估计肯定会释放 ...

  9. WORD2010如何把全角字母和数字批量转换成半角

    个人觉得全角字符看起来相当别扭,如果文档中存在大量全角形式的字母和数字,要如何把它们全部转化成半角的呢?   全角和半角   全角是指一个字符占用两个标准字符位置的状态.汉字字符和规定了全角的英文字符 ...

  10. 2、编程工具IAR、烧写工具SmartRF的使用

        IAR可以生成hex文件,SmartRF烧写hex文件到CC2530单片机. [IAR] 主要步骤:创建workspace.新建工程Project.新建文件(C源件).C源件Add到Proje ...