JavaScript超全的知识点总结【二】

目录

前文基础

嵌入方式

函数进阶

字典

面向对象

三目运算符

转义

其他

综合案例


前文基础

【JS】快速入门DOM_coleak的博客-CSDN博客

一篇文章带你学完JavaScript基础知识,超全的JavaScript知识点总结_coleak的博客-CSDN博客

嵌入方式

  • 内嵌式

理论上js可以写在任何第一个地方 但是一般写在head标签里或者 body下

<script type="application/javascript">
alert("内嵌式");
</script>
<script>alert("内嵌式");</script>
  • 外链式

新建一个文件类型为.js的文件,然后在该文件中写js语句,通过script标签对引入到html页面中。

<script src="js文件路径地址">这里不能写js语句</script>
  • 行内式

直接书写在标签身上,是一个简写的事件,所以又称之为事件属性

onclick单击事件
<input type="button" value="coleak" onclick="alert('xss');">
<button onclick="alert('xss');">coleak</button>

函数进阶

  • 匿名函数(没有名字的函数称为匿名函数)

每3000毫秒打印一个123

<script type="text/javascript">
setInterval(function(){console.log(123);},3000)
</script>

  • 自执行函数 (创建函数并且自动执行)
<script type="text/javascript">
(function(arg){console.log(arg);})(1);
</script>

字典

  • 输出字典元素

<script type="text/javascript">
var dict = {'k1':"coleak",'k2':'moon','age':18};
for(var item in dict)
{
console.log(dict[item]);
}
</script>
  • 删除元素
<script type="text/javascript">
var dict = {'k1':"coleak",'k2':'moon','age':18};
for(var item in dict)
{
console.log(dict[item]);
}
delete dict['age']
delete dict.k1;
for(var item in dict)
{
console.log(dict[item]);
}
</script>

面向对象

JavaScript是一种基于原型的语言,它没类的声明语句,比如C+ +或Java中用的。这有时会对习惯使用有类申明语句语言的程序员产生困扰。相反,JavaScript可用方法作类。定义一个类跟定义一个函数一样简单。

  • 方法一
<script type="text/javascript">
function Person(my_name) {
     //构造函数里面的方法和属性
    this._name = my_name;
    this.getName = function ()
    {
         console.log(this._name);
     };
     this.setName = function (Setname) 
     {
         this._name = Setname;
     };
 }
 
 var p = new Person("张三");
 p.getName();
 p.setName("李四");
 p.getName();
</script>
  • 方法二
<script type="text/javascript">
class Person {
     constructor(name) 
     {
         this._name = name;
     }
     getName() 
     {
         console.log(this._name);
     }
     setName(name)
     {
        this._name = name
    }
}
 let p = new Preson('张三')
 p.getName();  // 张三
 p.setName('李四');
 p.getName();  // 李四
</script>

三目运算符

表达式1?表达式2:表达式3

当我的表达式1成立时  执行表达式2  否则执行表达式3

<script type="text/javascript">
var max = 2>1?'>':'<';
alert(max);
</script>

转义

escape()函数

定义和用法 
escape() 函数可对字符串进行编码,该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。

encodeURI()函数

encodeURI() 函数可把字符串作为 URI 进行编码

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

encodeURIComponent() 函数

encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。 其中encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号

总结

escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。

  • 案例
<script type="text/javascript">
document.write(escape("http://test.cn/index.html") + "<br />")
document.write(escape("?!=()#%&"))
</script>

unescape还原

http%3A//test.cn/index.html
%3F%21%3D%28%29%23%25%26

document.write(encodeURI("my test.php?name=ståle&car=saab") + "<br />")
document.write(encodeURI("?!=()#%&"))

decodeURI还原

my%20test.php?name=st%C3%A5le&car=saab
?!=()#%25&

url编码 

<script type="text/javascript">
document.write(encodeURIComponent("http://test.cn/index.html") + "<br />")
document.write(encodeURIComponent("?!=()#%&"))
</script>

codeURIComponent还原

http%3A%2F%2Ftest.cn%2Findex.html
%3F!%3D()%23%25%26

其他

console.log 终端输出

alert 弹出框

confirm 确认框 标题 true false

url和刷新

location.href  获取url

location.href ='url' 重定向

location.reload() 重新加载

定时器

setInterval()

clearInterval()

<script>

var str="Hello world!";
document.write(str.substring(3)+"<br>");
document.write(str.substring(3,7));

</script>

lo world!(3~length-1,即为后文全输出)
lo w(3~6)

charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1 

onblur 当用户离开input输入框时执行一段Javascript代码 

综合案例

  • 走马灯
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<div id="c1">
		 	coleak的走马灯测试内容
		</div>
		<script>
			function p()
			{
				var tag =document.getElementById('c1');
				var t = tag.innerText;
				var l = t.charAt(0);
				var s = t.substring(1,t.length);
				tag.innerText = s+l;
			}
			setInterval('p()',350);
		</script>
	</body>
</html>
  • 搜索框
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<form method="get" action="">
			<input  id='c1' type="text" value="请输入关键字搜索" onfocus="f1();" onblur="f2();" />
			<input type="submit" value="搜索" />
		</form>
		<script>
			function f1(){
				var tag = document.getElementById('c1');
				var c = tag.value
				if(c =='请输入关键字搜索'){
					tag.value='';
				}
			}
			function f2(){
				var tag = document.getElementById('c1');
				var c = tag.value;
				if(c.length==0){
					tag.value='请输入关键字搜索';
				}
			}
		</script>
	</body>
</html>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coleak

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值