Web前端面试指导(四十一):html5有哪些新特性、移除了那些元素?

题目点评

题目涉及到范围非常的大,如果要面面俱到显然半天都答不完,可以先罗列出H5的一些新特性,不要回答那么具体,等面试官提具体的问题,所以在面试之前也要把这里的技术过一遍,至少每个技术也要做个小程序出来体验一下。

(一).H5新特性

增强了图形渲染、影音、数据存储、多任务处理等处理能力主要表现在

1)  绘画 canvas;

类似windows自带的画图板,可绘制线、框、路径、图……,InternetExplorer 9、Firefox、Opera、Chrome 以及 Safari 支持 <canvas> 及其属性和方法。

画图需要的要素

a)   笔,用笔可以画线、圆、矩形、文本等

b)   颜色

c)   画板

由于画布案例比较多,代码比较复杂,请看视频学习http://www.chuanke.com/3885380-190205.html 

2)  本地离线存储 localStorage

长期存储数据,浏览器关闭后数据不丢失;

1.特点

数据永久存储,没有时间限制;大小限制5M(够用了);只存储字符串。

2.数据存取方式

localStorage.a = 3;//设置a为"3"
localStorage["a"] = "sfsf";//设置a为"sfsf",覆盖上面的值
localStorage.setItem("b","isaac");//设置b为"isaac"
var a1 = localStorage["a"];//获取a的值
var a2 = localStorage.a;//获取a的值
var b = localStorage.getItem("b");//获取b的值
var b2= localStorage.key(0);//获取第一个key的内容
localStorage.removeItem("c");//清除c的值
localStorage.clear();//清除所有的数据

推荐使用:

getItem()

setItem()

removeItem()

3.事件监听

if(window.addEventListener){
 window.addEventListener("storage",handle_storage,false);//
}else if(window.attachEvent){ //兼容IE
 window.attachEvent("onstorage",handle_storage);
}
function handle_storage(e){
 }

对象e为localStorage对象,Chrome、Firefox支持差,IE支持较好。

3)  sessionStorage的数据在浏览器关闭后自动删除;操作参考localStorage

4)  用于媒介回放的 video audio 元素;

5)  语意化更好的内容元素,比如article、footer、header、nav、section;

6)  表单控件,calendar、date、time、email、url、search;

7)  新的技术webworker(专用线程)

8)  websocketsocket通信

9)  Geolocation 地理定位

(二)移除的元素

纯表现的元素

  •   <basefont> 默认字体,不设置字体,以此渲染
  •   <font> 字体标签
  •   <center> 水平居中
  •   <u> 下划线
  •   <big> 大字体
  •   <strike> 中横线
  •   <tt> 文本等宽

框架集

  •   <frameset>
  •   <noframes>
  •   <frame>

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`std::move`不会被除,它是C++11引入的重要特性之一。它的主要作用是将左值转换为右值引用,从而实现对对象的动语义。 如果你听说过`std::move`将被除,可能是误解了。实际上,C++20标准中引入了一个新的特性——`std::move_if_noexcept`,它可以在对象的动构造函数不抛出异常时,返回一个右值引用,否则返回一个左值引用。这个新特性的目的是为了优化异常安全性,避免在动对象时抛出异常,从而提高程序的性能。 下面是一个例子,演示了如何使用`std::move`和`std::move_if_noexcept`: ```cpp #include <iostream> #include <vector> class Foo { public: Foo() = default; Foo(const Foo&) { std::cout << "Copied" << std::endl; } Foo(Foo&&) noexcept { std::cout << "Moved" << std::endl; } }; int main() { std::vector<Foo> v1(10); std::vector<Foo> v2(std::move(v1)); // 动构造函数 std::vector<Foo> v3(std::move_if_noexcept(v2)); // 动构造函数,因为动构造函数不抛出异常 std::vector<Foo> v4(v3); // 拷贝构造函数 return 0; } ``` 在上面的例子中,我们定义了一个类`Foo`,这个类有一个动构造函数和一个拷贝构造函数。在`main`函数中,我们首先创建了一个`std::vector`对象`v1`,并初始化了10个`Foo`对象。然后,我们通过`std::move`将`v1`对象的所有元素动到了一个新的`std::vector`对象`v2`中。在动构造函数中,我们使用了`std::cout`打印了一条信息来说明这个对象是被动构造函数动的。接着,我们又使用`std::move_if_noexcept`将`v2`对象的所有元素动到了另一个新的`std::vector`对象`v3`中。由于动构造函数不抛出异常,因此`std::move_if_noexcept`返回的是一个右值引用,实现了对对象的动。最后,我们使用拷贝构造函数将`v3`对象的所有元素拷贝到了一个新的`std::vector`对象`v4`中。 总之,`std::move`是C++11中引入的标准库函数,用于将左值转换为右值引用,实现对对象的动语义。C++20中引入了一个新特性`std::move_if_noexcept`,用于在对象的动构造函数不抛出异常时返回一个右值引用,否则返回一个左值引用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智学无忧-老曹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值