一、弱类型意识

 js变量是没有类型的

var a =1;   //a 就是一个变量  不要提类型

变量可以赋予任何类型的值,类型仅仅是值得性质  与变量无关

  js 的基本类型

变量未赋值时,其值为undefined

只有一个number类型表示数字,不区分整数还是小数

二、动态语言

动态语言针对不是变量,而是值!尤其是对象!

Var obj = {name:”yang”,age:3};
   //对象字面量

=后面的值是什么类型?

此时别提什么是弱类型,因为弱类型是针对变量的,此处问的是值是什么类型!

JS是动态语言,可以随意创建对象,而不需要有与之对应的类!

JS中没有类的概念(class)(ES6中新增加了class,但它实际上与java中的class是不一样的

动态语言不仅可以随意创建对象,而且可以

随意向对象添加属性、方法等成员

向对象删除属性、方法等成员

这个特性对应java来说是不可想象的

三、函数式编程

  函数(方法)
可以作为参数传递给另一个函数  【函数也是值】

函数名实际上也是一个普通变量

普通变量也可以赋一个函数作为值

函数实际上是一个对象,这个对象中包含了它的源代码

函数名、以及调用这个源代码的方法

function add(a,b){

return a + b

}

add是变量吗?     

函数是个对象吗?   是,函数是一个特殊的对象

 

原型

     原型存在的原因是因为JS中没有class,无法共享方法及静态成员

原型是一个容器(对象)可以存放被大量对象共享的方法及属性

JS定义了一条寻找属性/方法的规则:

先在对象本身上找,找到就使用,找不到就去原型中找,

原型中找不到就去原型的原型中找

...........

直到穷尽所有的原型为止(原型链)

DOM

Document Object Model 文档对象模型

实际就是给网页上的标签建立的模型,每一个都用一个对象来表示

每一个标签都是一个类

给网页上标签建模的目的是为了让JS能够以编程的方式控制、生成网页!

DOM是控制网页的API

  第一类API:获取标签对象

document.getElementById(“id”);

document.getElementsByTagName(“tagName”);

document.getElementsByName(“name”);

document.getElementsByClassName(“className”);

H5时代新增的2个方法

document.querySelector(CSS筛选器);   返回一个标签

document.querySelectorAll(CSS筛选器);
返回找到的所有标签

 

第二类API:操作标签的属性

tag.属性名 =
值;

Var value = tag.属性名;

tag.setAttribute(属性名,值);

var value =  tag.getAttribute(属性名);

 第三类API:控制标签的样式

tag.style.color=’red’;

tag.style.fontSize = ‘12px’;

错误写法:  tag.style.font-size

tag.style[‘font-size’] = ‘12px’

样式类

tag.classList.add(“样式类1”);    往上加

tag.classList.remove(“”)        去掉

tag.classList.toggle(“”)       没有就加上,有的话就去掉

tag.classList.contains(“”)     判断是否还有指定的样式类

第四类API:创建、添加、删除标签对象操作

var tag = document.createElement(标签名)

tag.属性名 =
值;

tag.setAttrribute(属性名,值);

parentTag.appendChild(tag); 追加到父标签中

tag.insertBefore();

tag.insertAdjecentElement(‘4种位置’, newTag);

tag.insertAdjecentHTML(‘4种位置’, html字符串);

tag.insertAdjectentText(‘4种位置’,文本字符串);

tag.remove();

第五类API:标签之间的关系

  tag.parentNode     上级标签

tag.children        下级标签

tag.childNodes      下级节点

tag.previousSibling    前面的兄弟标签

tag.nextSibling        后面的兄弟标签

   第六类API:监听事件

     鼠标事件

click(单击)  dblclick(双击)   context(右击)

mouseover(在上面)    mouseout(不在上面)

mouseenter(出进)   mouseleave(离开)

mousemove(移动)  mousewheel(滚动)

衍生出的拖拽事件:drag   dragstart   dragenter  dragleave   drop

衍生出的触控事件:touchstart   touchend   touchleave

键盘事件    

keyup(按键弹起)   keydown(按下不放手会连续触发)    keypress

窗口事件    

resize     close

 

打印相关事件、动画相关事件等

 

事件对象:当事件发生时浏览器会生成一个事件对象,将事件相关的数据都放到这个对象中,如哪个标签触发了事件
,事件发生时,鼠标的坐标位置,键盘按键的状态(ctrl、shift等是否按下,按下了哪个键)

 

监听事件:

    tag.on 事件名 = function(){

事件发生时会执行函数

}

//只能挂接一个监听函数

tag.addEventListener(‘事件名’,function(){

})

//可以为一个事件挂接多个个监听函数、

tag.removeEventListener(‘事件名’)

有关弱类型意识、DOM、动态语言与函数式编程的更多相关文章

  1. python 动态语言和协议编程

    动态语言:不需要去定义变量的类型 协议编程:一个类实现了某个魔法函数,这个类就是什么类型,理解为协议

  2. CTF中常见的 PHP 弱类型漏洞总结

    作者:ZERO    所属团队:Arctic Shell 参考资料: http://archimesan.me/2017/12/21/php%E5%BC%B1%E7%B1%BB%E5%9E%8B%E6 ...

  3. Python 到底是强类型语言,还是弱类型语言?

    0.前言 我在上一篇文章中分析了 为什么 Python 没有 void 类型 的话题,在文章发布后,有读者跟我讨论起了另一个关于类型的问题,但是,我们很快就出现了重大分歧. 我们主要的分歧就在于:Py ...

  4. PHP 是一门弱类型语言

    PHP 是一门弱类型语言 我们注意到,不必向 PHP 声明该变量的数据类型. PHP 会根据变量的值,自动把变量转换为正确的数据类型. 在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类 ...

  5. [py]python多态-动态语言的鸭子类型

    弱类型?强类型?动态语言,静态语言 弱类型: 在程序运行过程中,类型可变 还有一种说法: 动态 variables must necessarily be defined before they ar ...

  6. 是否含有RTTI(运行时类型信息)是动态语言与静态语言的主要区别

    运行时类型信息代表类型信息和对内存的操作能力. 运行时类型信息是运行时系统的基础. 类型信息分为编译时类型信息和运行时类型信息两种: 静态语言的类型信息只在编译时使用和保留,在可执行文件中没有类型信息 ...

  7. 解释型vs编译型 动态vs静态 强类型vs弱类型

    ------------------------------------------------------------ 释型.动态语言与静态语言.强类型语言与弱类型语言的区别 编译型和解释型 我们先 ...

  8. python是强类型还是弱类型语言

    几句话了解python特性 Python 是强类型的动态脚本语言 好多人对python到底是强语言类型还是弱语言类型存在误解,其实,是否是强类型语言只需要一句话就可以判别, 强类型:不允许不同类型相加 ...

  9. Python 语言特性:编译+解释、动态类型语言、动态语言

    1. 解释性语言和编译性语言 1.1 定义 1.2 Python 属于编译型还是解释型? 1.3 收获 2. 动态类型语言 2.1 定义 2.2 比较 2. 动态语言(动态编程语言) 3.1 定义 3 ...

随机推荐

  1. Spring Cloud(八):分布式配置中心服务化和高可用

    在前两篇的介绍中,客户端都是直接调用配置中心的server端来获取配置文件信息.这样就存在了一个问题,客户端和服务端的耦合性太高,如果server端要做集群,客户端只能通过原始的方式来路由,serve ...

  2. Ubuntu14.04单机版kubernetes安装指导

    转:http://dockone.io/article/950 概述本文主要讲述如何在Ubuntu系统上安装kubernetes,网络上也有许多相关的文章,感觉都不是很清晰,这里我将自己的安装实践给大 ...

  3. xcode下build release版本号的.a库

    1. 点击房子 图标button watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcnlmZGl6dW8=/font/5a6L5L2T/fontsize/40 ...

  4. python WSGI框架详解

    1.web应用的本质1)浏览器发送一个HTTP请求2)服务器收到请求,生成一个HTML文档3)服务器把HTML文档作为HTTP响应的body发个浏览器4)浏览器收到HTTP响应,从HTTP Body取 ...

  5. 一款基于css3鼠标经过圆形旋转特效

    今天给大家分享一款基于css3鼠标经过圆形旋转特效.当鼠标经过的时候图片边框颜色旋转,图片显示详情.该实例适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗 ...

  6. C语言 · Sine之舞

    基础练习 Sine之舞   时间限制:1.0s   内存限制:512.0MB    问题描述 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功.所以他准备和奶 ...

  7. 举例说明:Hadoop vs. NoSql vs. Sql vs. NewSql

    转自:http://blog.jobbole.com/86269/   尽管层次数据库如今在大型机上依然被广泛使用,但关系数据库(RDBMS)(SQL)已经占领了数据库市场,并且表现的相当优异.我们存 ...

  8. jenkins环境搭建&配置(二)

    Jenkins介绍: Jenkins用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. 安装环境: 操作系统:linux(centOS) 软件:jdk ...

  9. 【BZOJ】1684: [Usaco2005 Oct]Close Encounter(暴力+c++)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1684 这货完全在考精度啊.. 比如奇葩 (llf)a/b*i (llf)(a/b*i)和(llf)( ...

  10. 在MFC中改变控件的TAB顺序

    在MFC界面中,控件的TAB顺序如果乱了,不合理,可能会使界面出现意料之外的显示. 例如,在用Spin Control来对Edit Control内的值进行增减时,如果Edit Control.Spi ...