一名前端工程师的笔记分享!Js篇(03-14更新)

一名前端工程师的自学之路!Js篇(12-12更新)



xss : 跨站脚本攻击 (Cross Site Scripting)

为了不和层叠样式表(Cascading Style Sheet)的缩写混淆,故将跨站脚本攻击缩写为XSS


什么是脚本攻击 ?

思考问题:网站的注册功能

脚本攻击 : 就是在表单中输入一些特殊含义代码的数据 比如: <a href="#">xxx</a>

解决办法1 : 在表单中用Js 正则验证

问题来了 : 网站可以通过右键点击浏览器的查看源代码,获取网站的表单数据(包括后台路径);

这是,网站的使用者能将表单的数据粘贴到本地的另一个页面,运行这个页面,在表单中输入一些特殊含义的代码,也可以实现脚本攻击。

所以前段的Js验证 并没有从根本解决脚本攻击。

解决办法2 :在服务器上做验证

服务器如何验证-核心思想:去掉表单中输入的标签,保留标签的内容

<?php

header("content-type:text/html;charset=utf-8");

$name = $_POST["uname"];

//取消接收到的数据中所含有的标签

//echo strip_tags($name);//strip_tags php中去掉标签的方法

//通过验证去掉标签

$reg = '/<.+>(.*)</.+>/';

if(preg_match($reg,$name,$arr)){

$name = $arr[1];

}

echo $name;

?>

原理图

一名前端工程师的自学之路!Js篇(12-12更新)


对象

万事万物皆对象

对象是一个整体,对外提供一些功能

一切具有属性和方法的事物

一切具有本质特征的行为的物质

人:

属性 --- 人的本质特征 : 身高 体重 性别 年龄

方法 --- 人的具有的行为: 吃 喝 走路 学习...

汽车:

属性 --- 颜色 型号 品牌 价格

方法 --- 形式 启动

属性 ---》 静态

方法 ---》 动态

document对象: 属性没括号 方法 有括号;

数据类型:

所有的基本数据类型都没有属性和方法

所有的对象数据类型都有属性和方法

函数和方法的区别 : 方法属于函数,函数包含方法。

类的概念 : 类是具有相同本质特征的一类事物的总称。Js中的类 --- 构造函数

类和对象的区别:类是对象的抽象 对象是类的实例(类是对象的抽象化,对象是类的具象化)

现有对象,根据一类对象的共同特征抽象出类的概念 。


面向对象 (oop) Object Oriented Programming

面向对象编程: 是一种编程思想

面向过程:

面向对象语言: php java .net c++

面向过程语言: c语言

实例:

一条公路畅100000米,汽车行驶的速度 100km/h 问走稳这段路需要多久

面向过程 :h = 长度 / 速度

面向对象 :

公路:--属性:长度

人: --速度; 1000m/h

结果 = 公路.length / 人.speed


创建对象

第一种方法:

var obj = new Object();

obj.name = "zhangsan";定义对象属性

obj.age = 12 ; 定义对象属性

obj.walk = function (){//定义对象方法

alert("行走方法")

}

第二种方法:

var obj = {

"name":"xm",

"age":"12",

"walk":function(){

console . log ("行走方法")

}

};

严格的json对象只有属性没有方法

上述方式创建同类对象是,会产生重复的代码。


工厂模式(设计模式的一种)

优点:工厂模式可以解决同类对象创建时 重复代码 写多次的问题

缺点:

不能确定某一个对象属于哪一类;

一般一个对象通过 new 关键字构造出来的,而工厂模式只是一个很普通的函数

工厂模式 --- 模具

function createObj(){

//备料 --- 创建对象

var obj = new Object();

//加工 --- 为对象添加属性和方法

obj.name = name;

obj.tel = tel;

obj.say = function(){

return "hello"

}

//出厂 --- 将创建的对象返回

return obj;

}


构造函数

构造函数中的属性 叫做 实例属性

构造函数中的方法 叫做 实例方法

为了和普通函数区分,一般构造函数的命名规范是: 大驼峰 GaoJunJie

基本上所有的对象都是通过构造函数创建出来的

构造函数中的this 指向的是 构造函数执行时创建出来的那个对象。

定义一个构造函数

function Animla(name,age,food){

this.name = name;

this.age = age;

this.food = food;

this.eat = function(){

return this.name + "正在吃" + this.food;

}

}

var animal = new Animla("xiaohu",1.5,"骨头");

alert(animal.eat());

优点 : 解决了工厂模式中存在的缺点,可以通过构造函数方式,确定某个对象属于哪一个类

缺点 : 同类对象创建时,相同方法会重复创建。空间不共享


原型 prototype

写在原型函数中的属性叫做 :原型属性

写在原型函数中的方法叫做 :原型方法

定义一个原型函数

function Student(){

}

Student.prototype.name = "xm";

Student.prototype.age = 18;

Student.prototype.study=function(){

return "一定要好好学习";

}

var stu = new Student();

alert(stu.name);

alert(stu.study())

优点 : 解决了相同对象创建时方法重建的问题。

缺点 : 多个对象的属性值相同,不能更改。


混合

将属性写成构造函数的实例属性

将方法写成构造函数的原型方法

定义一个混合函数

function Go(name,age){

this.name = name;

this.age = age;

}

Go.prototype.study=function(){

return "啦啦啦"

}

var sss = new Go("Jay",18);

alert(sss.name);

alert(sss.study());


一名前端工程师的自学之路!Js篇(12-12更新)

我的小程序,自律更自由,如果你也喜欢锻炼的话在这里寻找你的小伙伴吧。

一只喜欢锻炼的程序猿,嘿嘿。

你都看到这了,不点个关注就过分了哈~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值